以下纯属个人理解!!!
1. Ajax分为页面部分(前端),和后台处理部分(后端,servlet);
2. 页面:创建XmlHttpRequest对象,不同的浏览器,所支持的XmlHttpRequest对象不通;
页面:建立发送函数 XmlHttpRequest.open("GET", url, true);
XmlHttpRequest.onreadystatechange = processResponse;
XmlHttpRequest.send(null); //XmlHttpRequest.send("uname=" + "lc")
在open函数,第一个参数:代表请求的方法,有两种,一种是get,令一种是post
第二个参数:提交给哪个网页或者servlet
第三个参数:true表示异步
在send函数:表示提交给servlet的参数。可以是简单的键值对参数,也可以是整个XML文档
用get方法提交时,参数是跟在url或login.do?uname=lc后面;
用post方法提交时,可以提交复杂的数据,比如,XML文档,
但用post提交时需要跟上,XmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form- urlencoded");
3. 页面:创建回调函数,processResponse(),用来处理具体从servlet返回的数据
if(xmlHttpReq.readyState == 4) {
if(xmlHttpReq.status == 200) {
var res = xmlHttpReq.responseText;
window.alert(res);
} else {
window.alert("您所请求的页面有异常!");
}
}
4. 页面:返回的数据可以是纯文本:XmlHttpRequest.responseText;
也可以是XML文档:XmlHttpRequest.responseXML;
5. 页面:把返回的数据显示到html/jsp页面中,通过document.all.a00.innerHTML();
或者直接操作dom对象,在html/jsp中增加节点
6. 后台:前台用get + 简单的参数 。后台处理方式
String uname = req.getParameter("uname");
PrintWriter out = resp.getWriter();
out.println("<response>");
if("lc".equals(uname) && "lc".equals(password)) {
out.println("<res>热烈欢迎您!</res>");
} else {
out.println("<res>对不起,登入失败!</res>");
}
out.println("</response>");
out.close();
说明:返回前台的可是是纯文本,也可以是xml文档,此处为XML文档
7. 后台:前台用post + xml参数 。 后台处理方式
StringBuilder bxml = new StringBuilder();
String line = null;
try{
BufferedReader reader = req.getReader();
while((line = reader.readLine()) != null) {
bxml.append(line);
}
}catch(Exception e) {
e.printStackTrace();
}
String xml = bxml.toString();
xml = URLDecoder.decode(xml,"utf8");//提交时乱码,这是解决
Document xmlDoc = null;
try{
xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
.parse(new ByteArrayInputStream(xml.getBytes()));
}catch(Exception e) {
e.printStackTrace();
}
String name = xmlDoc.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
String responseText = "";
PrintWriter out = resp.getWriter();
if("lc".equals(name) && "lc".equals(psw)) {
responseText = "热烈欢迎您!";
} else {
responseText = "对不起,登入失败!";
}
//设置输出信息的格式及字符集
resp.setCharacterEncoding("utf-8");
resp.setHeader("charset","utf-8");
resp.setContentType("text/xml;charset=utf-8");
out.write(responseText);
out.close();
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/aaabendan/archive/2010/02/23/5319596.aspx