AJAX
1、什么是AJAX?
Asynchronous Javascript And Xml
异步的JavaScript和XML。
AJAX不是一个技术,是多个技术联合实现的产物。
2、AJAX是浏览器客户端上的前端技术。
注意:只要是做web开发,B/S架构的,不管服务器端编程语言是哪一种,前端AJAX都是要学习的。
做PHP开发,AJAX也得学习。
3、异步和同步有什么区别?
A线程和B线程,并发执行,谁也不等谁,这就是异步。
A线程和B线程,在A线程执行的时候B线程需要等待,或者B线程执行的时候A线程需要等待,这就是同步。
4、传统的请求和AJAX请求有什么区别?
传统的请求:都是同步的。
AJAX请求:可以做到异步。
5、AJAX经典的案例
Google的auto_complete(输入框的自动补全)
Google的map(谷歌地图)
6、浏览器本身这个软件也是支持多线程并发的。其中ajax请求就是一个线程。
一个页面上可以同时发送多个AJAX请求。多个AJAX请求对应浏览器多个线程。
当整个浏览器采用的是传统请求的时候,请求只要一发送,整个浏览器窗口锁定,
无法点击其它按钮,并且浏览器会将窗口当中的数据全部清除,迎接新的页面。
7、AJAX主要解决的问题:
页面的局部刷新问题。 使用AJAX可以在同一个网页当中并发的发送多个请求。请求与请求之间互不等待,互不干扰。 这样可以提高用户的体验。
8、AJAX异步请求用户的体验在浏览器上不存在间断期,用户体验不间断。
但是传统的请求,由于整个页面会被全部清除,有一个空白期,用户的体验是间断的。
(现代的开发中:多数请求都是AJAX,但传统请求也会存在,并行的。)
9、AJAX编程四步
- 创建AJAX核心对象
- 注册回调函数
- 开启通道
- 发送请求
10、源码
10.1、Ajax-get示例
/**
* Copyright © 2020 zongyue All rights reserved.
*
* 功能描述:
* @Package: ajax.web.action
* @author: zongyue
* @date: 2020年4月12日 下午6:28:11
*/
package ajax.web.action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.coyote.Request;
/**
* Copyright: Copyright (c) 2020
*
* Date Author Version ClassName
*---------------------------------------------------------*
* 2020年4月12日 zongyue v1.0.0 CheckUsernameAction.java
*
* @Description:
*/
public class CheckUsernameAction extends HttpServlet {
/**
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
* @Function: CheckUsernameAction.java
* @Description:
*
* @param:
* @return:
* @throws:
*
* @version: v1.0.0
* @author: zongyue
* @date: 2020年4月12日 下午6:29:46
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//获取用户名
String username= request.getParameter("username");
//连接数据库验证用户名是否存在
if("admin".equals(username)){
//用户名不可用
out.print("<font color='red'>用户名已被注册</font>");
}else{
//用户名可用
out.print("<font color='green'>用户名可用</font>");
}
//响应信息给浏览器
}
}