【Java框架型项目从入门到装逼】第六节 - 用ajax请求后台数据

简介: 【Java框架型项目从入门到装逼】第六节 - 用ajax请求后台数据

这一节我们来说一下如何用ajax提交请求?

我们先不讲ajax的原理,还是先以实战为主,看一下这个东西到底怎么用的?

form表单

<!-- 采用post表单提交 -->
  <form style="margin-left:200px;" id="myform" name="myform" method="post" onsubmit="return sumbitTest();"   
        action="login.do">  
      <table>  
          <tr>  
              <td>用户名:</td>  
              <td> <input type="text" name="username" id="username"/> </td>  
          </tr>  
          <tr>  
              <td>密码:</td>  
              <td> <input type="password" name="password" id="password"/> </td>  
          </tr>  
          <tr>  
              <td colspan="2">  
                  <input style="display:none" id="login_btn" type="submit" value="提交">  
              </td>  
          </tr>  
          <div id="errMsg" style="color:red">${errMsg}</div>
          <input id="loginType" type="text" name="loginType" hidden='true'/> </td>
      </table>  
  </form>  


修改提交方法:

         function doLogin(type){
      if(type == 'QQ'){
        alert('您选择的是QQ登录');
      }
      if(type == 'weixin'){
        alert('您选择的是微信登录');
      }
      $("#loginType").val(type);
      //$("#login_btn").click();
      //如果验证通过,就开始进行提交 
      if(sumbitTest()){
         $.ajax({
                 type: "GET",
                 url: "login.do",
                 data: {username:$("#username").val(), password:$("#password").val()},
                 dataType: "json", //预期服务器返回的数据
                 success: function(data){
                      if(data.errCode < 0){
                        $("#errMsg").show().html(data.errMsg).stop(true,true).fadeOut(3000);
                      }else{
                        //登录成功,做其他处理
                        alert("恭喜你,登录成功!") 
                      }
                          }
             });
      }
    }
    //验证登录信息 
    function sumbitTest(){
      return true;
      //在这个方法中可以对登录信息进行校验 (作业,用户名和密码都不能为空) 
      if(!$("#username").val()){
        alert("用户名不能为空!");
        return false;
      }
      if(!$("#password").val()){
        alert("密码不能为空!");
        return false; 
      }
    }


ajax是异步操作,和同步操作的form表单提交不同。

例子一:同步就是打电话,对方不接就一直等。异步就是发微信,对方回不回我都可以去做别的事情。


例子二:同步就像玩RPG回合制游戏,比如口袋妖怪,你打我一下,我打你一下。异步就像玩红色警戒,我可以先派20辆天启坦克去轰炸对面的兵工厂,下完指令后还可以立刻回到主基地造一座雷达。

OK,刚才我们看到ajax提交有一个属性是text,这就表示返回的数据格式是文本。实际上,我们一般用的数据格式并非text,而是JSON。我们需要在Servlet中手动给我们的JSP页面返回一个json数据。

WebUtil.writeObject(resp, JSONObject.fromObject(resultData) );

其中,resultData是一个包含错误码和错误信息的专用类:

public class ResultData {
  private int errCode = 0;
  private String errMsg;
  public int getErrCode() {
    return errCode;
  }
  public void setErrCode(int errCode) {
    this.errCode = errCode;
  }
  public String getErrMsg() {
    return errMsg;
  }
  public void setErrMsg(String errMsg) {
    this.errMsg = errMsg;
  }
}

因为最终转换的时候肯定默认调用resultData对象的toString方法,所以我们不妨直接重写ResultData类的toString方法,返回JSON格式。

相关文章
|
2月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
3月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
1533 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
6月前
|
自然语言处理 前端开发 Java
JBoltAI 框架完整实操案例 在 Java 生态中快速构建大模型应用全流程实战指南
本案例基于JBoltAI框架,展示如何快速构建Java生态中的大模型应用——智能客服系统。系统面向电商平台,具备自动回答常见问题、意图识别、多轮对话理解及复杂问题转接人工等功能。采用Spring Boot+JBoltAI架构,集成向量数据库与大模型(如文心一言或通义千问)。内容涵盖需求分析、环境搭建、代码实现(知识库管理、核心服务、REST API)、前端界面开发及部署测试全流程,助你高效掌握大模型应用开发。
630 5
|
2月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
2月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
132 8
|
2月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
98 7
|
4月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
275 23
|
3月前
|
SQL Java 数据库连接
区分iBatis与MyBatis:两个Java数据库框架的比较
总结起来:虽然从技术角度看,iBATIS已经停止更新但仍然可用;然而考虑到长期项目健康度及未来可能需求变化情况下MYBATISS无疑会是一个更佳选择因其具备良好生命周期管理机制同时也因为社区力量背书确保问题修复新特征添加速度快捷有效.
219 12
|
4月前
|
存储 缓存 安全
Java集合框架(三):Map体系与ConcurrentHashMap
本文深入解析Java中Map接口体系及其实现类,包括HashMap、ConcurrentHashMap等的工作原理与线程安全机制。内容涵盖哈希冲突解决、扩容策略、并发优化,以及不同Map实现的适用场景,助你掌握高并发编程核心技巧。