JAVA 之 Ajax

2023-05-16

1.什么是Ajax?

        AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即是用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。

Ajax实际上是下面这几种技术的融合:

  • (1)XHTML和CSS的基于标准的表示技术
  • (2)DOM进行动态显示和交互
  • (3)XML和XSLT进行数据交换和处理
  • (4)XMLHttpRequest进行异步数据检索
  • (5)Javascript将以上技术融合在一起

客户端与服务器,可以在【不必刷新整个浏览器】的情况下,与服务器进行异步通讯的技术

2.同步交互和异步交互

  • 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;

  • 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

3.为什么要使用Ajax?

在我们之前的开发,每当用户向服务器发送请求,哪怕只是需要更新一点点的局部内容,服务器都会将整个页面进行刷新。

  • 性能会有所降低(一点内容,刷新整个页面!)
  • 用户的操作页面会中断(整个页面被刷新了)

Ajax就是能够做到局部刷新

4.Ajax核心(XMLHttpRequest)

        XMLHttpRequest对象是Ajax中最重要的一个对象使用Ajax更多的是编写客户端代码,而不是服务端的代码。

1.XMLHttpRequest 工作原理

        传统的web前端与后端的交互中,浏览器直接访问Tomcat的Servlet来获取数据。Servlet通过转发把数据发送给浏览器。

        当我们使用AJAX之后,浏览器是先把请求发送到XMLHttpRequest异步对象之中,异步对象对请求进行封装,然后再与发送给服务器。服务器并不是以转发的方式响应,而是以流的方式把数据返回给浏览器

        MLHttpRequest异步对象会不停监听服务器状态的变化,得到服务器返回的数据,就写到浏览器上【因为不是转发的方式,所以是无刷新就能够获取服务器端的数据】

2.创建XMLHttpRequest对象 

要创建XMLHttpRequest对象是要分两种情况考虑的:

  • 在IE6以下的版本
  • 在IE6以上的版本以及其他内核的浏览器(Mozilla)等
<script type="text/javascript">
    var httpRequest;
    if(window.XMLHttpRequest) {
        //在IE6以上的版本以及其他内核的浏览器(Mozilla)等
        httpRequest = new XMLHttpRequest();
    }else if(window.ActiveXObject) {
        //在IE6以下的版本
        httpRequest = new ActiveXObject();
    }
</script>

5.创建第一个Ajax应用

在输入验证码的时候,当我们点击输入框外面的时候,就进行了比较并将结果反馈在验证码后面, 

 

如上图这样,这就是一个经典的ajax异步交互例子

html代码

        <div class="form-inline">
            <label for="vcode">验证码:</label>
            <input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="请输入验证码" style="width: 120px;"/>
            <a href="javascript:refreshCode()" ><img src="<%=request.getContextPath()%>/checkCode" title="看不清点击刷新" id="vcode"/></a>
            <span id="yzm"></span>
        </div>

js代码

<script>
//验证码实时验证
       $(function(){
           $("#verifycode").blur(function(){
               var tess=$("#verifycode").val();
               $.post("/AjsxServlet",{"verifycode":tess},function (resq) {
                   var parse = JSON.parse(resq);
                   if(parse==="验证码正确!"){
                       $("#yzm").css("color","green");
                       $("#yzm").html(parse);
                   }else{
                       $("#yzm").css("color","red");
                       $("#yzm").html(parse)
                   }
               })
           });
       });
    </script>

 Java代码

import com.alibaba.fastjson.JSON;
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 javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(name = "AjsxServlet",value = "/AjsxServlet")
public class AjsxServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        //获取input内容
        String verifycode = request.getParameter("verifycode");
        //获取域对象
        HttpSession session = request.getSession();
        //获取验证码
        String checkcode = session.getAttribute("CHECKCODE_SERVER").toString();
        String stats="";
        //将验证码和输入框的内容作比较
        if(verifycode!=null && !verifycode.equalsIgnoreCase(checkcode)){
            stats="验证码错误!";
            //转换为JSON对象发给页面
            String s = JSON.toJSONString(stats);
            response.getWriter().println(s);
        }
        else{
            stats="验证码正确!";
            //转换为JSON对象发给页面
            String s = JSON.toJSONString(stats);
            response.getWriter().println(s);
        }
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA 之 Ajax 的相关文章

随机推荐

  • macs2安装失败 Preparing metadata (pyproject.toml) ... error macs3

    https anaconda org bioconda macs2 下载之后 conda install use local file 实在buxing 安装macs3也可以
  • 各种seq ribo-seq rna-seq pipelines

    SPR WorkFlow Collection sysPipe
  • tinyarray 相关性cor.full

    R Documentation cor test for one variable with all variables Description cor test for all variables each two columns Usa
  • Elasticsearch中FST与前缀搜索

    FST的基本概念 FST xff08 Finite State Transducer xff09 是一种有限状态自动机 xff0c 可以将一组输入符号映射为一组输出符号 FST由一组状态和一组转移组成 xff0c 状态可以是起始状态 接受状
  • zabbix邮箱告警的三种方式

    zabbix邮箱告警的三种方式 1 在web界面配置邮箱告警2 在本地邮箱配置邮箱告警 43 脚本3 在第三方邮箱配置邮箱告警 43 脚本 1 在web界面配置邮箱告警 添加媒介 我们以126邮箱为示例 先打开POP3 SMTP服务 xff
  • NanoStringQCPro: Quality metrics and data processing methods for NanoString mRNA gene expression dat

    addCodesetAnnotationAdd NanoString codeset annotation to an RccSetaddQCFlagsAdd sample QC flags to an rccSetallSumPlotal
  • Python爬虫编程7——多线程爬虫

    目录 一 多线程基本介绍 程序中模拟多任务 二 多线程的创建 三 主线程与子线程的执行关系 四 查看线程数量 五 线程间的通信 xff08 多线程共享全局变量 xff09 六 线程间的资源竞争 互斥锁和死锁 互斥锁 死锁 七 Queue线程
  • SCL 和 SDA 是 I2C 总线上的两个信号线。 c++ 模拟数据

    I2C xff08 Inter Integrated Circuit xff0c 又称为 IIC 或 TWI xff09 是一种串行通信协议 xff0c 用于在微控制器和外围设备之间进行数据传输 I2C 协议只需要两根信号线 xff1a S
  • Python 代码中三种波浪线和 PEP8

    红色 红色波浪线是代码的错误 必须处理 代码才能执行 注意 在后续课程中 某些代码没有写完 也会出现红色波浪线 灰色 灰色波浪线 xff0c 不会影响代码的正常执行 xff0c 基本上所有的灰色 浪线都是PEP8 造成的PEP8 是Pyth
  • 阶乘累加求和

    项目场景 xff1a 入门练习题 问题描述 xff1a 提示 xff1a 这里描述项目中遇到的问题 xff1a 请用函数编程实现 求和 1 43 2 43 3 xff01 43 n xff
  • python爬虫之数据解析(BeautifulSoup)

    BeautifulSoup也是python爬虫常用的一种数据解析方法 xff0c 主要就两步 1 实例化一个Beautifulsoup对象 xff0c 平且将页面源码数据加载到该对象中 2 通过调用Beautifulsoup对象中相关的属性
  • 解决Ubuntu不能上网以及无法远程连接Ubuntu

    本文环境 物理机OS xff1a Windows10 专业版 虚拟机平台 xff1a VMware Workstation 16 Pro 虚拟机OS xff1a Ubuntu 20 04 相信大家在使用Ubuntu中也有遇到不能上网 xff
  • Python实现地方天气查询并语音播报。

    续上次篇程序 xff0c 有老哥说做个续集 xff0c 那我就做个续集和优化 xff0c 升级 上篇文章 xff1a Python获取城市天气 详细介绍用api获取城市的天气赶快收藏起来 xff01 Pymili的博客 CSDN博客 pyt
  • JAVA 实参和形参

    形参 xff1a 是指在定义函数 时使用的参数 xff0c 目的是用于接收调用该函数时传入的参数 简单理解 xff0c 就是所有函数 xff08 即方法 xff09 的参数都是形参 实参 xff1a 在调用有参函数时 xff0c 主调函数和
  • JAVA 包装类

    1 概念 Java是一个面向对象的编程语言 xff0c 但是Java中的八种基本数据类型却是不面向对象的 xff0c 为了使用方便和解决这个不足 xff0c 在设计类时为每个基本数据类型设计了一个对应的类进行代表 xff0c 这样八种基本数
  • swagger被拦截器拦截

    配置swagger文档 xff0c 被拦截器拦截不能使用 拦截器中添加以下配置 xff0c 适当修改即可使用 重写addInterceptors registry addInterceptor new UserInterceptor add
  • JAVA之JDBC连接数据库

    前景说明 xff1a 在我们刚开始使用数据库的时候 xff0c 发现只能在mysql编辑器里面使用sql语句来完成对数据库的操作 xff0c 那我们怎么来通过Java来操控数据库呢 xff1f 这个时候就有了JDBC的出现 1 什么是JDB
  • Css margin 和 float浮动

    1 浮动 定义 浮动是css里面布局最多的一个属性 xff0c 也是很重要的一个属性 float xff1a 表示浮动的意思 它有四个值 none 表示不浮动 xff0c 默认right xff1a 表示右浮动left 表示左浮动 floa
  • Java Servlet组件

    1 什么是Servlet xff1f 从广义上来讲 xff0c Servlet规范是Sun公司制定的一套技术标准 xff0c 包含与Web应用相关的一系列接口 xff0c 是Web应用实现方式的宏观解决方案 而具体的Servlet容器负责提
  • JAVA 之 Ajax

    1 什么是Ajax xff1f AJAX xff08 Asynchronous Javascript And XML xff09 翻译成中文就是 异步Javascript和XML 即是用Javascript语言与服务器进行异步交互 xff0