AJAX思维导图
AJAX原理
Ajax的工作原理相当于在客户端和服务器之间加了—个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做, 只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。
Ajax技术的核心:XMLHttpRequest
jQuery 对AJAX的封装
JSP示例代码
使用jQuery发送Ajax请求,代码大大简化,Ajax返回JSON格式数据。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="<%=path%>/js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
$(function(){
$.ajax({
url:"json.do",
type:"POST",
data:"",
dataType:"JSON",
success:function(data){
$("#id").text(data.id);
$("#name").text(data.name);
$("#pwd").text(data.pwd);
},
error:function(){
alert("系统繁忙");
}
});
});
</script>
</head>
<body>
<div id="id"></div>
<div id="name"></div>
<div id="pwd"></div>
</body>
</html>
Servlet
package com.southwind.servlet;
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;
public class JsonServlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp);
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
resp.setContentType("text/html;charset=UTF-8");
String str ="{\"id\":1,\"name\":\"张三\",\"pwd\":123}";
PrintWriter out = resp.getWriter();
out.print(str);
out.flush();
out.close();
}
}
不过由于手动拼接json数据非常麻烦,我们借助工具类来完成json的数据转换。
package com.southwind.entity;
public class User {
private int id;
private String name;
private String pwd;
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
-------------------------------------------------------------------------------------
package com.southwind.servlet;
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 net.sf.json.JSONObject;
import com.southwind.entity.User;
public class JsonServlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp);
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
resp.setContentType("text/html;charset=UTF-8");
User user = new User();
user.setId(1);
user.setName("张三");
user.setPwd("123");
PrintWriter out = resp.getWriter();
JSONObject json = JSONObject.fromObject(user);
out.print(json);
out.flush();
out.close();
}
}