AJAX
AJAX
1、什么是AJAX
Asynchronous JavaScript And XML
异步的 JavaScript 和 XML
AJAX不是一门单独的技术而是多个技术的联合使用
2、异步和同步的区别?
异步:A、B线程各自执行互不干预
同步:A、B线程,当A执行是B线程进入等待,或者B线程执行A线程等待,这就是同步
3、传统请求和AJAX的区别?
传统请求:都是同步的
AJAX请求:可以做到异步
4、浏览器这个软件本身是支持多线程并发的,其中AJAX请求就是一个线程,一个页面上可以同时发送多个AJAX请求,多个AJAX请求对应浏览器多个线程
当整个浏览器采用传统的请求方式时,请求已发送当前的窗口就会锁定,无法在进行其他操作,并且浏览器会将整个页面全部清除,迎接新的页面
5、AJAX主要解决的问题
页面的局部刷新问题
使用AJAX可以在同一个网页中发送多个请求,请求与请求之间互不等待,互不干扰,这样可以提高用户的体验
6、命令的执行
四步 : 1、创建XMLHttpRequest对象(异步请求对象)
2、为异步请求对象建立回调函数
3、开启通道
4、发送请求
代码:
GET请求:
jsp文件
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
用户名:
密码:
servlet文件
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class check extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType(“text/html;charset=UTF-8”);
String username = req.getParameter(“username”);
PrintWriter out = resp.getWriter();
if (username.equals(“abc”)){
out.print(“用户名已被注册”);
}else {
out.print(“用户名可以使用”);
}
}
}
POST请求
代码:
jsp文件
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
用户登录
密码:
servlet文件
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class user_login extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType(“text/html;charset=UTF-8”);
String username = req.getParameter(“username”);
String password = req.getParameter(“password”);
StringBuilder json = new StringBuilder();//使用builder是因为buffer是线程安全的,但是局部变量并不会存在任何线程安全问题
if (username.equals(“abc”)&&password.equals(“123”)){
HttpSession session = req.getSession();//给登录成功的用户设立session对象
json.append(“{“success”:true}”);
}else {
json.append(“{“success”:false}”);
}
resp.getWriter().print(json);
}
}