广告
返回顶部
首页 > 资讯 > 后端开发 > 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://www.lsjlt.com/news/374371.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 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+js实现异步交互的方法
    小编给大家分享一下Ajax+js实现异步交互的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JS是什么JS是JavaScript的简称,它是一种直译式的脚本语...
    99+
    2023-06-08
  • java中的同步交互和异步交互有什么区别
    同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程。异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。在线视频教程分享:java在线视频区别:一个需要等待,一个不需要等待,在部分情...
    99+
    2014-12-29
    java入门 java 同步交互 异步交互 区别
  • 如何在AJAX中使用 Servlet实现数据异步交互
    本篇文章为大家展示了如何在AJAX中使用 Servlet实现数据异步交互,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先,导入json所需要的6个包下载链接:JSONObjectjar_jb51....
    99+
    2023-05-31
    ajax servlet 数据异步交互
  • java中的异步交互与同步交互的区别是什么
    同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程。异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。免费视频教程推荐:java免费视频教程两者区别:一个需要等待,一个不需要等待,...
    99+
    2022-04-30
    java入门 java 异步交互 同步交互 区别
  • ChatGPT PHP技术解析:构建自动化智能交互系统的关键步骤
    ChatGPT PHP技术解析:构建自动化智能交互系统的关键步骤,需要具体代码示例简介ChatGPT是一种基于人工智能的语言模型,能够生成逼真的对话,实现自动化智能交互。它被广泛应用于各种场景下的客服机器人、语音助手等领域。本文将介绍如何使...
    99+
    2023-10-25
    自动化 PHP 关键词:ChatGPT
  • C#5.0中的异步编程关键字async和await
    一、Asynchronous methods 异步方法 .NET 4.5 的推出,对于C#又有了新特性的增加——就是C#5.0中async和await两个关键...
    99+
    2022-11-13
  • 如何处理ajax异步提交返回值中的换行问题
    这篇文章将为大家详细讲解有关如何处理ajax异步提交返回值中的换行问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。背景介绍:需要实现的功能是:在下拉框中选择分类,提交到...
    99+
    2022-10-19
  • Python框架中的同步关键字和异步框架有什么区别?
    Python是一种高级编程语言,广泛用于Web应用程序的开发。Python框架中的同步关键字和异步框架是Web开发中的两个重要概念。同步关键字是一种常见的编程方式,它指的是在代码执行期间,代码中的操作必须按照顺序执行。而异步框架则是指在代...
    99+
    2023-06-24
    同步 关键字 框架
  • Bash关键字在Java异步编程中的作用是什么?
    在Java编程中,异步编程是一种非常重要的编程方式。异步编程可以提高程序的性能和响应速度。在Java中,我们通常使用线程池或者Future等方式来实现异步编程。但是,你知道吗?Bash关键字也可以在Java异步编程中发挥重要作用。 那么,...
    99+
    2023-10-09
    异步编程 bash 关键字
  • Go语言中的关键字:异步编程和文件操作
    Go语言是一门快速发展的编程语言,它在异步编程和文件操作方面有着出色的表现。本文将介绍Go语言中异步编程和文件操作的关键字,并通过演示代码来展示它们的用法。 异步编程 异步编程是指在执行任务时,不会阻塞主线程,而是在后台使用其他线程或进程来...
    99+
    2023-09-24
    异步编程 文件 关键字
  • Java中异步编程的关键字和存储方式是什么?
    随着互联网的普及和应用场景的不断扩大,异步编程逐渐成为开发人员必须掌握的技能之一。Java作为一门流行的编程语言,也支持异步编程。在本文中,我们将探讨Java中异步编程的关键字和存储方式。 一、异步编程的概念 异步编程是一种编程方式,其中...
    99+
    2023-07-25
    异步编程 关键字 存储
  • 分布式系统中的Java异步编程:关键字是什么?
    随着互联网的普及和技术的不断发展,分布式系统的应用越来越广泛。在分布式系统中,异步编程是非常重要的一种编程方式,它能够提高系统的并发性和性能,保证系统的可靠性和稳定性。而Java作为一种广泛应用于分布式系统的编程语言,其异步编程也是非常重...
    99+
    2023-07-31
    异步编程 分布式 关键字
  • 你真的了解Go中异步编程和数组的关键字吗?
    Go语言是一门高效的编程语言,它具有简洁明了的语法和强大的并发特性。其中异步编程和数组是Go语言中的两个重要关键字。本文将为大家详细介绍Go语言中异步编程和数组的关键字,并且演示代码方便大家理解。 一、异步编程 异步编程是指在程序执行过程中...
    99+
    2023-10-02
    数组 异步编程 关键字
  • 你知道Java异步编程中的关键字和存储方式吗?
    Java异步编程是现代软件开发中不可或缺的一部分。在Java中,异步编程能够帮助我们更好地处理网络请求、I/O操作等事件,以及提高应用程序的性能和响应时间。本文将介绍Java异步编程中的关键字和存储方式,并通过实例演示它们的使用。 一、Ja...
    99+
    2023-07-25
    异步编程 关键字 存储
  • 如何使用Java异步编程中的关键字和存储方式?
    Java作为一种高级编程语言,已经成为了众多应用程序的首选语言。在编写Java应用程序时,开发人员需要考虑很多问题,例如程序的性能、响应速度和可扩展性。异步编程是一种解决这些问题的有效方法,本文将介绍Java异步编程中的关键字和存储方式。 ...
    99+
    2023-07-25
    异步编程 关键字 存储
  • 索引和异步编程:Java面试中必须掌握的关键技能。
    索引和异步编程:Java面试中必须掌握的关键技能 在Java开发中,索引和异步编程是两个非常重要的概念。索引是指对数据进行快速检索的一种技术,而异步编程则是提高程序性能和响应速度的一种方式。在Java面试中,对这两个概念的掌握程度也是面试官...
    99+
    2023-06-15
    面试 索引 异步编程
  • jQuery如何选取所有复选框被选中的值并用Ajax异步提交数据
    这篇文章将为大家详细讲解有关jQuery如何选取所有复选框被选中的值并用Ajax异步提交数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。示例:首先,我做了一个简单的多个...
    99+
    2022-10-19
  • Go语言中数组的异步编程:使用关键字来优化性能。
    Go语言中数组的异步编程:使用关键字来优化性能 在Go语言中,数组是一种非常常见的数据结构。它可以存储一组相同类型的数据,并且可以通过下标来访问其中的元素。在某些情况下,我们需要对数组进行一些复杂的操作,例如排序、查找、过滤等等。这些操作可...
    99+
    2023-10-02
    数组 异步编程 关键字
  • 异步编程和关键字:Go语言中数组操作的最佳实践。
    异步编程和关键字:Go语言中数组操作的最佳实践 随着计算机技术的不断发展,异步编程已经成为了一种趋势。异步编程可以让程序在执行任务的同时,继续执行其他任务,从而提高程序的效率。在Go语言中,异步编程是非常重要的,因为Go语言的并发特性非常强...
    99+
    2023-10-02
    数组 异步编程 关键字
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作