杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]

简介: 杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]

采用Ajax整合表单数据进行提交给Servlet后台代码、可以完成同步或者异步操作。

以下中,并没有去声明同步或者异步。该属性为async,默认值为true[异步].

那么需要注意的是同步请求锁住浏览器,用户其它操作必须等待请求完成才可以执行。

通俗来说,同步操作会导致步骤内容具有阻塞性的操作

1. 初级版_未采用ajax

1.1 页面代码 :

<form action="/bookServlet" method="post">
    图书名称:  <input type="text" name="bookName"   />
    图书价格:  <input type="text" name="bookPrice"  />
    <input type="submit" value="添加图书" />
</form>

1.2 Servlet代码 :

package cn.javabs.servlet;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * 基于IDEA | 采用 Servlet3.0注解方式、即代表不需要再写web.xml
 * @author Mryang 
 */
@WebServlet("/bookServlet")
public class BookServlet extends HttpServlet {
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // 设置请求编码
        request.setCharacterEncoding("utf-8");
        // 设置响应编码
        response.setCharacterEncoding("utf-8");
        // 设置响应内容类型
        response.setContentType("text/html;charset=utf-8");
        // 获取请求参数
        String bookName = request.getParameter("bookName");
        String bookPrice = request.getParameter("bookPrice");
        // 输出请求参数
        System.out.println("您输入的内容是:"+bookName+":"+bookPrice);
    }
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 调用dopost方法、达到代码复用
        this.doPost( request,  response);
    }
}

2. 中级版_采用ajax

2.1 页面代码:

<!--引入JQuery插件-->
<script src="js/jquery-1.7.2.min.js"></script>
<form>
    图书的名称:  <input type="text" name="bookName"  id="bookName"   />
    图书的价格:  <input type="text" name="bookPrice" id="bookPrice"  />
    <button id="btn">图书添加</button>
</form>
<script>
    $(function () {
        // 获取按钮元素| 当被单击会触发匿名函数
        $("#btn").click(function () {
            // 接收客户端用户输入的值
            var bookName =  $('#bookName').val();
            var bookPrice = $('#bookPrice').val();
            // 调用JQuery中的 .ajax()方法【url表示传递数据到哪里的地址、type表示传递方式的选择、data表示传递的参数、success和error表示回调函数】
            $.ajax({
                url:"/bookServlet",// 替换掉form表单中的action属性值
                type:"POST",//替换掉form表单中的method属性值
                data:{'bookName':bookName,'bookPrice':bookPrice},//传递的两项参数      
                
                success:function (data) {// 成功时自动调取的回调函数
                    alert(data);
                },
                error:function (data) {// 失败时自动调取的回调函数
                    alert(data);
                }
            });
        });
 
    });
</script>

2.2 Servlet代码

package cn.javabs.servlet;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * 基于IDEA | 采用 Servlet3.0注解方式、即代表不需要再写web.xml
 * @author Mryang 
 */
@WebServlet("/bookServlet")
public class BookServlet extends HttpServlet {
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // 设置请求编码
        request.setCharacterEncoding("utf-8");
        // 设置响应编码
        response.setCharacterEncoding("utf-8");
        // 设置响应内容类型
        response.setContentType("text/html;charset=utf-8");
        // 获取请求参数
        String bookName = request.getParameter("bookName");
        String bookPrice = request.getParameter("bookPrice");
        // 输出请求参数
        System.out.println("您输入的内容是:"+bookName+":"+bookPrice);
        // 响应内容传递数据给Ajax的回调函数data
        response.getWriter().write("我收到数据了!给你看一下:"+bookName+":"+bookPrice);
    }
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 调用dopost方法、达到代码复用
        this.doPost( request,  response);
    }
}

3. 高级版_采用ajax

3.1 页面代码:

<!--引入JQuery插件-->
<script src="js/jquery-1.7.2.min.js"></script>
<form>
    图书的名称:  <input type="text" name="bookName"  id="bookName"   />
    图书的价格:  <input type="text" name="bookPrice" id="bookPrice"  />
    <button id="btn">图书添加</button>
</form>
<script>
    $(function () {
        // 获取按钮元素| 当被单击会触发匿名函数
        $("#btn").click(function () {
          
            // 调用JQuery中的 .ajax()方法【url表示传递数据到哪里的地址、type表示传递方式的选择、data表示传递的参数、success和error表示回调函数】
            $.ajax({
                url:"/bookServlet",// 替换掉form表单中的action属性值
                type:"POST",//替换掉form表单中的method属性值
                   
                // serialize():是可以将整个表单的数据转成URL的字符串格式{注:意味着将整个表单进行了提交、不再像中级版一个参数一个参数提交了}
                data: $("#myform").serialize(),//给表单设置一个id较做myform |serialize()方法是将整个表单进行了序列化操作
                success:function (data) {// 成功时自动调取的回调函数
                    alert(data);
                },
                error:function (data) {// 失败时自动调取的回调函数
                    alert(data);
                }
            });
        });
 
    });
</script>

3.2 Servlet代码

package cn.javabs.servlet;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * 基于IDEA | 采用 Servlet3.0注解方式、即代表不需要再写web.xml
 * @author Mryang 
 */
@WebServlet("/bookServlet")
public class BookServlet extends HttpServlet {
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // 设置请求编码
        request.setCharacterEncoding("utf-8");
        // 设置响应编码
        response.setCharacterEncoding("utf-8");
        // 设置响应内容类型
        response.setContentType("text/html;charset=utf-8");
        // 获取请求参数
        String bookName = request.getParameter("bookName");
        String bookPrice = request.getParameter("bookPrice");
        // 输出请求参数
        System.out.println("您输入的内容是:"+bookName+":"+bookPrice);
        // 响应内容传递数据给Ajax的回调函数data
        response.getWriter().write("我收到数据了!给你看一下:"+bookName+":"+bookPrice);
    }
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 调用dopost方法、达到代码复用
        this.doPost( request,  response);
    }
}


20190529004544846.gif

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。


目录
相关文章
|
6月前
|
Java 应用服务中间件 Maven
IDEA创建一个Servlet项目(tomcat10)
IDEA创建一个Servlet项目(tomcat10)
308 1
|
2月前
|
前端开发 JavaScript 数据处理
JQuery 拦截请求 | Ajax 请求拦截
【10月更文挑战第4天】
126 1
|
3月前
|
JSON 前端开发 JavaScript
jQuery AJAX 方法
jQuery AJAX 方法
36 1
|
3月前
|
JSON JavaScript 前端开发
Jquery常用操作汇总,dom操作,ajax请求
本文汇总了jQuery的一些常用操作,包括DOM元素的选择、添加、移除,表单操作,以及如何使用jQuery发送Ajax请求,涵盖了GET、POST请求和文件上传等常见场景。
|
3月前
|
JSON 前端开发 JavaScript
jQuery AJAX 方法
jQuery AJAX 方法
27 1
|
4月前
|
前端开发 JavaScript Java
SpringBoot+JQuery+Ajax实现表单数据传输和单文件或多文件的上传
关于如何在SpringBoot项目中结合JQuery和Ajax实现表单数据的传输以及单文件或多文件上传的教程。文章提供了完整的前后端示例代码,包括项目的`pom.xml`依赖配置、SpringBoot的启动类`App.java`、静态资源配置`ResourceConfig.java`、配置文件`application.yml`、前端HTML页面(单文件上传和多文件上传加表单内容)以及后端控制器`UserController.java`。文章最后展示了运行结果的截图。
251 0
SpringBoot+JQuery+Ajax实现表单数据传输和单文件或多文件的上传
|
4月前
|
XML JSON 前端开发
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
35 0
|
6月前
|
Kubernetes Java 数据库连接
杨校老师课堂之IntellJ IDEA的使用技巧
杨校老师课堂之IntellJ IDEA的使用技巧
40 0
|
6月前
杨校老师课堂之封装工具类【时间工具类|类型转换器|客户端Servlet工具类】
杨校老师课堂之封装工具类【时间工具类|类型转换器|客户端Servlet工具类】
32 0
下一篇
DataWorks