返回顶部
首页 > 资讯 > 后端开发 > JAVA >JavaWeb中异步交互的关键——Ajax
  • 909
分享到

JavaWeb中异步交互的关键——Ajax

ajax交互servletjava 2023-08-18 16:08:35 909人浏览 泡泡鱼
摘要

文章目录 1,Ajax 概述1.1 作用1.2 同步和异步1.3 案例1.3.1 分析1.3.2 后端实现1.3.3 前端实现 2,axios2.1 基本使用2.2 快速入门2.2.1 后端实现 2.2.2 前端实

在这里插入图片描述

1,ajax 概述

AJAX (Asynchronous javascript And XML):异步的 JavaScript 和 XML。

我们先来说概念中的 JavaScriptXMLJavaScript 表明该技术和前端相关;XML 是指以此进行数据交换。
在这里插入图片描述

1.1 作用

AJAX 作用有以下两方面:

  1. 与服务器进行数据交换:通过AJAX可以给服务器发送请求,服务器将数据直接响应回给浏览器。如下图

我们先来看之前做功能的流程,如下图:

在这里插入图片描述

如上图,Servlet 调用完业务逻辑层后将数据存储到域对象中,然后跳转到指定的 jsp 页面,在页面上使用 EL表达式JSTL 标签库进行数据的展示。

而我们学习了AJAX 后,就可以使用AJAX和服务器进行通信,以达到使用 html+AJAX来替换JSP页面了。如下图,浏览器发送请求servlet,servlet 调用完业务逻辑层后将数据直接响应回给浏览器页面,页面使用 HTML 来进行数据展示。

在这里插入图片描述

  1. 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用校验,等等…

在这里插入图片描述

上图所示的效果我们经常见到,在我们输入一些关键字(例如 奥运)后就会在下面联想出相关的内容,而联想出来的这部分数据肯定是存储在百度的服务器上,而我们并没有看出页面重新刷新,这就是 更新局部页面 的效果。
在这里插入图片描述

1.2 同步和异步

知道了局部刷新后,接下来我们再聊聊同步和异步:

  • 同步发送请求过程如下

在这里插入图片描述

​ 浏览器页面在发送请求给服务器,在服务器处理请求的过程中,浏览器页面不能做其他的操作。只能等到服务器响应结束后才能,浏览器页面才能继续做其他的操作。

  • 异步发送请求过程如下

    在这里插入图片描述

    浏览器页面发送请求给服务器,在服务器处理请求的过程中,浏览器页面还可以做其他的操作。

在这里插入图片描述

1.3 案例

需求:在完成用户注册时,当用户名输入框失去焦点时,校验用户名是否在数据库已存在

在这里插入图片描述

1.3.1 分析

  • 前端完成的逻辑
    1. 给用户名输入框绑定光标失去焦点事件 onblur
    2. 发送 ajax请求,携带username参数
    3. 处理响应:是否显示提示信息
  • 后端完成的逻辑
    1. 接收用户名
    2. 调用service查询User。此案例是为了演示前后端异步交互,所以此处我们不做业务逻辑处理
    3. 返回标记

整体流程如下:

在这里插入图片描述

1.3.2 后端实现

定义名为 SelectUserServlet 的servlet。代码如下:

@WEBServlet("/selectUserServlet")public class SelectUserServlet extends httpservlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //1. 接收用户名        String username = request.getParameter("username");        //2. 调用service查询User对象,此处不进行业务逻辑处理,直接给 flag 赋值为 true,表明用户名占用        boolean flag = true;        //3. 响应标记        response.getWriter().write("" + flag);    }    @Override    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        this.doGet(request, response);    }}

1.3.3 前端实现

04-资料\1. 验证用户名案例\1. 静态页面 下的文件整体拷贝到项目webapp 下。并在 reGISter.html 页面的 body 结束标签前编写 script 标签,在该标签中实现如下逻辑

第一步:给用户名输入框绑定光标失去焦点事件 onblur

第二步:发送 ajax请求,携带username参数

第一步 绑定的匿名函数中书写发送 ajax 请求的代码

由于我们发送的是 GET 请求,所以需要在 URL 后拼接从输入框获取的用户名数据。而我们在 第一步 绑定的匿名函数中通过以下代码可以获取用户名数据

// 获取用户名的值var username = this.value;  //this : 给谁绑定的事件,this就代表谁

而携带数据需要将 URL 修改为:

xhttp.open("GET", "http://localhost:8080/ajax-demo/selectUserServlet?username="+username);

第三步:处理响应:是否显示提示信息

this.readyState == 4 && this.status == 200 条件满足时,说明已经成功响应数据了。

此时需要判断响应的数据是否是 “true” 字符串,如果是说明用户名已经占用给出错误提示;如果不是说明用户名未被占用清除错误提示

综上所述,前端完成代码如下:

//1. 给用户名输入框绑定 失去焦点事件document.getElementById("username").onblur = function () {    //2. 发送ajax请求    // 获取用户名的值    var username = this.value;    //2.1. 创建核心对象    var xhttp;    if (window.XMLHttpRequest) {        xhttp = new XMLHttpRequest();    } else {        // code for IE6, IE5        xhttp = new ActiveXObject("Microsoft.XMLHTTP");    }    //2.2. 发送请求    xhttp.open("GET", "http://localhost:8080/ajax-demo/selectUserServlet?username="+username);    xhttp.send();    //2.3. 获取响应    xhttp.onreadystatechange = function() {        if (this.readyState == 4 && this.status == 200) {            //alert(this.responseText);            //判断            if(this.responseText == "true"){                //用户名存在,显示提示信息                document.getElementById("username_err").style.display = '';            }else {                //用户名不存在 ,清楚提示信息                document.getElementById("username_err").style.display = 'none';            }        }    };}

在这里插入图片描述

2,axiOS

Axios 对原生的AJAX进行封装,简化书写。

Axios官网是:https://www.axios-http.cn

2.1 基本使用

axios 使用是比较简单的,分为以下两步:

  • 引入 axios 的 js 文件

    <script src="js/axios-0.18.0.js">script>
  • 使用axios 发送请求,并获取响应结果

    • 发送 get 请求

      axios({    method:"get",    url:"http://localhost:8080/ajax-demo1/aJAXDemo1?username=zhangsan"}).then(function (resp){    alert(resp.data);})
    • 发送 post 请求

      axios({    method:"post",    url:"http://localhost:8080/ajax-demo1/aJAXDemo1",    data:"username=zhangsan"}).then(function (resp){    alert(resp.data);});

axios() 是用来发送异步请求的,小括号中使用 js 对象传递请求相关的参数:

  • method 属性:用来设置请求方式的。取值为 get 或者 post
  • url 属性:用来书写请求的资源路径。如果是 get 请求,需要将请求参数拼接到路径的后面,格式为: url?参数名=参数值&参数名2=参数值2
  • data 属性:作为请求体被发送的数据。也就是说如果是 post 请求的话,数据需要作为 data 属性的值。

then() 需要传递一个匿名函数。我们将 then() 中传递的匿名函数称为 回调函数,意思是该匿名函数在发送请求时不会被调用,而是在成功响应后调用的函数。而该回调函数中的 resp 参数是对响应的数据进行封装的对象,通过 resp.data 可以获取到响应的数据。

2.2 快速入门

2.2.1 后端实现

定义一个用于接收请求的servlet,代码如下:

@WebServlet("/axiosServlet")public class AxiosServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        System.out.println("get...");        //1. 接收请求参数        String username = request.getParameter("username");        System.out.println(username);        //2. 响应数据        response.getWriter().write("hello Axios~");    }    @Override    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        System.out.println("post...");        this.doGet(request, response);    }}

2.2.2 前端实现

  • 引入 js 文件

    <script src="js/axios-0.18.0.js"></script>
  • 发送 ajax 请求

    • get 请求

      axios({    method:"get",    url:"http://localhost:8080/ajax-demo/axiosServlet?username=zhangsan"}).then(function (resp) {    alert(resp.data);})
    • post 请求

      axios({    method:"post",    url:"http://localhost:8080/ajax-demo/axiosServlet",    data:"username=zhangsan"}).then(function (resp) {    alert(resp.data);})

整体页面代码如下:

DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Titletitle>head><body><script src="js/axios-0.18.0.js">script><script>    //1. get       //2. post  在js中{} 表示一个js对象,而这个js对象中有三个属性    axios({        method:"post",        url:"http://localhost:8080/ajax-demo/axiosServlet",        data:"username=zhangsan"    }).then(function (resp) {        alert(resp.data);    })script>body>html>

2.3 请求方法别名

为了方便起见, Axios 已经为所有支持的请求方法提供了别名。如下:

  • get 请求 : axios.get(url[,config])

  • delete 请求 : axios.delete(url[,config])

  • head 请求 : axios.head(url[,config])

  • options 请求 : axios.option(url[,config])

  • post 请求:axios.post(url[,data[,config])

  • put 请求:axios.put(url[,data[,config])

  • patch 请求:axios.patch(url[,data[,config])

而我们只关注 get 请求和 post 请求。

入门案例中的 get 请求代码可以改为如下:

axios.get("http://localhost:8080/ajax-demo/axiosServlet?username=zhangsan").then(function (resp) {    alert(resp.data);});

案例中的 post 请求代码可以改为如下:

axios.post("http://localhost:8080/ajax-demo/axiosServlet","username=zhangsan").then(function (resp) {    alert(resp.data);})

最后说一句

感谢大家的阅读,文章通过网络资源与自己的学习过程整理出来,希望能帮助到大家。

才疏学浅,难免会有纰漏,如果你发现了错误的地方,可以提出来,我会对其加以修改。

在这里插入图片描述

来源地址:https://blog.csdn.net/m0_69383623/article/details/129236555

--结束END--

本文标题: JavaWeb中异步交互的关键——Ajax

本文链接: https://lsjlt.com/news/374371.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaWeb中异步交互的关键——Ajax
    文章目录 1,Ajax 概述1.1 作用1.2 同步和异步1.3 案例1.3.1 分析1.3.2 后端实现1.3.3 前端实现 2,axios2.1 基本使用2.2 快速入门2.2.1 后端实现 2.2.2 前端实...
    99+
    2023-08-18
    ajax 交互 servlet java
  • Ajax如何实现异步交互
    这篇文章主要介绍了Ajax如何实现异步交互,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。利用ajax实现异步交互无非4步:1.创建ajax核...
    99+
    2024-04-02
  • Ajax+js实现异步交互的方法
    小编给大家分享一下Ajax+js实现异步交互的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JS是什么JS是JavaScript的简称,它是一种直译式的脚本语...
    99+
    2023-06-08
  • java中的同步交互和异步交互有什么区别
    同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程。异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。在线视频教程分享:java在线视频区别:一个需要等待,一个不需要等待,在部分情...
    99+
    2014-12-29
    java入门 java 同步交互 异步交互 区别
  • java中的异步交互与同步交互的区别是什么
    同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程。异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。免费视频教程推荐:java免费视频教程两者区别:一个需要等待,一个不需要等待,...
    99+
    2022-04-30
    java入门 java 异步交互 同步交互 区别
  • 如何在AJAX中使用 Servlet实现数据异步交互
    本篇文章为大家展示了如何在AJAX中使用 Servlet实现数据异步交互,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先,导入json所需要的6个包下载链接:JSONObjectjar_jb51....
    99+
    2023-05-31
    ajax servlet 数据异步交互
  • 如何让Ajax异步传输与PHP实现交互
    这篇文章主要讲解了“如何让Ajax异步传输与PHP实现交互”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何让Ajax异步传输与PHP实现交互”吧!背景 前台页面两个select框,一个与学...
    99+
    2023-06-08
  • Ajax怎么实现客户端与浏览器异步交互
    今天小编给大家分享一下Ajax怎么实现客户端与浏览器异步交互的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2024-04-02
  • Ajax中怎么利用XML实现异步提交
    这篇文章给大家介绍Ajax中怎么利用XML实现异步提交,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一种方法是xml方法1.首先在jsp页面的JavaScript,这段代码是通用的,...
    99+
    2024-04-02
  • 纯javascript中ajax如何实现php异步提交表单
    这篇文章将为大家详细讲解有关纯javascript中ajax如何实现php异步提交表单,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。很多时候需要异步提交表单,当表单太多是时候,一个个getElementB...
    99+
    2023-06-08
  • 关于ajax异步访问数据的问题
    在js中,处理数据固然很快,sososo就能完成所有的数据处理,我们似乎不需要使用异步传输数据 跨洋数据传输就出现了问题,一来2s过去了一回2s过去了,这对于访问者来说,这就是卡 再...
    99+
    2024-04-02
  • 关键字重定向:PHP和JavaScript的交互方式。
    在现代互联网应用开发中,PHP和JavaScript是最常用的两种编程语言。PHP主要用于服务器端的开发,而JavaScript则主要用于客户端的开发。两种语言都有各自的优点和限制,但是它们之间的交互却是非常关键的。在本文中,我们将介绍P...
    99+
    2023-10-19
    关键字 重定向 javascript
  • 如何处理ajax异步提交返回值中的换行问题
    这篇文章将为大家详细讲解有关如何处理ajax异步提交返回值中的换行问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。背景介绍:需要实现的功能是:在下拉框中选择分类,提交到...
    99+
    2024-04-02
  • Ajax中同步和异步的示例分析
    小编给大家分享一下Ajax中同步和异步的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!通过ajax向后台发送和接收数据时...
    99+
    2024-04-02
  • C#5.0中的异步编程关键字async和await
    一、Asynchronous methods 异步方法 .NET 4.5 的推出,对于C#又有了新特性的增加——就是C#5.0中async和await两个关键...
    99+
    2024-04-02
  • jquery中的ajax异步上传实例
    这篇文章主要讲解了“jquery中的ajax异步上传实例”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery中的ajax异步上传实例”吧!ajaxfi...
    99+
    2024-04-02
  • ChatGPT PHP技术解析:构建自动化智能交互系统的关键步骤
    ChatGPT PHP技术解析:构建自动化智能交互系统的关键步骤,需要具体代码示例简介ChatGPT是一种基于人工智能的语言模型,能够生成逼真的对话,实现自动化智能交互。它被广泛应用于各种场景下的客服机器人、语音助手等领域。本文将介绍如何使...
    99+
    2023-10-25
    自动化 PHP 关键词:ChatGPT
  • jquery中的ajax同步和异步的详细介绍
    本篇内容主要讲解“jquery中的ajax同步和异步的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery中的ajax同步和异步的详细介绍”吧!之...
    99+
    2024-04-02
  • Ajax请求中异步与同步的示例分析
    这篇文章主要为大家展示了“Ajax请求中异步与同步的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ajax请求中异步与同步的示例分析”这篇文章吧。 ...
    99+
    2024-04-02
  • 如何在 Python 中使用异步编程关键字?
    在 Python 中,异步编程是一种非常流行的编程方式。它可以提高程序的性能和响应速度,特别是在处理大量 I/O 操作时。Python 3.5 引入了 async 和 await 关键字,使得异步编程变得更加容易。 在本文中,我们将介绍如何...
    99+
    2023-10-02
    异步编程 关键字 教程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作