AJAX异步

导读:本篇文章讲解 AJAX异步,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

同步/异步:

异步(ajax):客户端发出请求之后立即就可以做别的操作,不用等服务器响应后再接 着操作。
在这里插入图片描述

同步(普通):客户端发出请求之后就不能在做别的操作了,必须等服务器响应后才可以 接着操作。
在这里插入图片描述

同步(普通)

将之前创建的监听器和过滤器全部关闭,避免影响。
运行结果如下:
在这里插入图片描述
在这里插入图片描述
点击链接,可以看出“ 复选框 ”被重新刷新,回到“ 请选择 ”的选项。
在这里插入图片描述

代码如下:

TimeServlet:

package com.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;
import java.time.LocalDateTime;

@WebServlet(urlPatterns = "/TimeServlet")
public class TimeServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取服务器时间
        String localDateTime=LocalDateTime.now().toString();
        req.setAttribute("time","服务器:"+localDateTime);
        req.getRequestDispatcher("/time.jsp").forward(req,resp);
    }
}

time.jsp:

<%--
  Created by IntelliJ IDEA.
  User: 33154
  Date: 2022/8/7
  Time: 17:26
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <select>
        <option>请选择</option>
        <option>河南</option>
        <option>河北</option>
    </select>
    <a href="${pageContext.request.contextPath}/TimeServlet">获取服务器端的时间</a>
    <hr/>
    <div id="myDiv" style="width: 500px;height: 300px;border: 1px solid black">
        ${time}   <%-- ${time}为el代码块--%>
    </div>
</body>
</html>

在这里插入图片描述

异步(ajax)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

代码如下:

TimeAjaxServlet :

package com.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;
import java.io.PrintWriter;
import java.time.LocalDateTime;

@WebServlet(urlPatterns = "/TimeAjaxServlet")
public class TimeAjaxServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //针对ajax请求做特定的处理
        String localDateTime= LocalDateTime.now().toString();
        resp.setContentType("text/html;charset=utf-8");
        //使用响应对象,直接将数据输出给浏览器(注意不是返回页面,只是返回数据),用于对ajax请求做响应
        PrintWriter out= resp.getWriter();
        out.println("服务器:"+localDateTime);
        out.flush();
        out.close();
    }
}

timeAjax.jsp:

<%--
  Created by IntelliJ IDEA.
  User: 33154
  Date: 2022/8/7
  Time: 17:26
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <select>
        <option>请选择</option>
        <option>河南</option>
        <option>河北</option>
    </select>
    <a href="javascript:getTime()">获取服务器端的时间</a>
    <hr/>
    <div id="myDiv" style="width: 500px;height: 300px;border: 1px solid black">

    </div>

    <script type="text/javascript">
        //ajax请求和处理相应
        function getTime(){
            //alert(123);
            //定义js原生ajax对象
            var xhr=new XMLHttpRequest(); //XMLHttpRequest() 能够发送ajax请求的对象
            //打印初始状态
            alert("初始状态:"+xhr.readyState);
            //配置ajax对象请求状态切换事件
            //readyState:ajax请求状态
            //change:状态变化的时候
            xhr.onreadystatechange=function (){
                //显示当前的请求状态
                alert(xhr.readyState);
                //xhr.readyState==4 表示ajax请求已经完成
                if(xhr.readyState==4 && xhr.status==200){
                    //xhr.responseText 服务器返回的内容
                    //获取服务器返回的内容
                    myDiv.innerHTML+=xhr.responseText+"</br>";
                }
            }
            //配置请求的方式和请求地址
            xhr.open("get","${pageContext.request.contextPath}/TimeAjaxServlet")
            //发送请求
            xhr.send();

            /*
            //绑定页面加载完成事件
            window.onload=function (){
                alert(123)
            }
             */
        }

    </script>


</body>
</html>

在这里插入图片描述

最终代码整体目录:

在这里插入图片描述

// A code block
var foo = 'bar';
// A code block
var foo = 'bar';

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118073.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!