杨校老师课堂之基于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

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


目录
相关文章
|
2天前
|
Java 应用服务中间件 Maven
IDEA创建一个Servlet项目(tomcat10)
IDEA创建一个Servlet项目(tomcat10)
10 1
|
2天前
|
JSON 前端开发 JavaScript
Struts2处理(jQuery)Ajax请求(2)
Struts2处理(jQuery)Ajax请求
|
2天前
|
JSON 前端开发 JavaScript
Struts2处理(jQuery)Ajax请求(1)
Struts2处理(jQuery)Ajax请求
|
8天前
杨校老师课堂之封装工具类【时间工具类|类型转换器|客户端Servlet工具类】
杨校老师课堂之封装工具类【时间工具类|类型转换器|客户端Servlet工具类】
11 0
|
8天前
|
前端开发 Java
杨校老师课堂之使用Ajax校验用户名是否可用
杨校老师课堂之使用Ajax校验用户名是否可用
8 0
|
8天前
杨校老师课堂之Servlet的重构为BaseServlet的步骤【内含视频讲解】
杨校老师课堂之Servlet的重构为BaseServlet的步骤【内含视频讲解】
10 0
|
5天前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
|
5天前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
|
5天前
|
缓存 小程序 前端开发
Java服务器端技术探秘:Servlet与JSP的核心原理
【6月更文挑战第23天】Java Web开发中的Servlet和JSP详解:Servlet是服务器端的Java小程序,处理HTTP请求并响应。生命周期含初始化、服务和销毁。创建Servlet示例代码展示了`doGet()`方法的覆盖。JSP则侧重视图,动态HTML生成,通过JSP脚本元素、声明和表达式嵌入Java代码。Servlet常作为控制器,JSP处理视图,遵循MVC模式。优化策略涉及缓存、分页和安全措施。这些技术是Java服务器端开发的基础。
|
5天前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。