jsp页面代码如下:
1
<%
@ page language="java" contentType="text/html; charset=ISO-8859-1"
2
pageEncoding="gbk"%>
3
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4
<html>
5
<head>
6
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
7
<title>login jsp</title>
8
<script type="text/javascript">
9
var xhr;
10
function submit()
{
11
var username = document.getElementById("username");
12
var password = document.getElementById("password");
13
14
//1.创建XMLHttpRequest对象
15
if(window.XMLHttpRequest)
{
16
//IE7,IE8,Firefox,Mozilla,Safari,Opera支持这种直接的创建方式
17
xhr = new XMLHttpRequest();
18
//如果服务器端发送过来的数据没有MimeType头的话,浏览器可能无法正常工作
19
//所以要加上如下代码
20
if(xhr.overrideMineType){
21
xhr.overrideMineType("text/xml")
22
}
23
}else if(window.ActiveXObject){
24
//IE6,IE5.5,IE5由于这些版本在创建XMLHttpRequest时所用控件不同,所以采用如下方式
25
var activexName = ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0",
26
"MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
27
for(var i=0;i<activexName.length;i++){
28
try{
29
xhr = new ActiveXObject(activexName[i]);//如果不能创建它会抛出一个异常
30
break;//如果创建成功,则跳出循环
31
}catch(e){}
32
}
33
}
34
if(xhr == undefined || xhr == null){
35
alert("当前浏览器不支持创建XMLHttpRequest对象");
36
return;
37
}
38
39
// 2.注册回调函数
40
xhr.onreadystatechange = callback; //注意这个回调函数名不能加括号
41
42
//3.设置与服务器进行交互的一些参数
43
/**//*
44
//采用GET方式与服务端交互
45
xhr.open("GET","login.do?username="+username.value+"&password="+password.value,true)
46
//4.设置向服务器端发送的数据,启动与服务器的交互
47
xhr.send(null);
48
*/
49
//采用POST方式与服务端交互
50
xhr.open("POST","login.do",true)
51
//采用POST方式需要增加如下设置
52
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
53
//4.设置向服务器端发送的数据,启动与服务器的交互
54
xhr.send("username="+username.value+"&password="+password.value);
55
56
}
57
58
function callback()
{
59
//5.判断与服务器端的交互是否完成,还要判断服务器端是否正确返回了数据
60
if(xhr.readyState==4)
{//表示交互已完成
61
if(xhr.status==200)
{//表示正确返回了数据
62
//纯文本数据的接受方法
63
var msg = xhr.responseText;
64
var tt = document.getElementById("message");
65
tt.innerHTML=msg;
66
/**//*
67
//XML数据对应的DOM对象的接受方法
68
注意它的使用前提是,服务器端需要设置content-type为text/xml
69
var domXml = xhr.responseXML;
70
//得到这个Dom之后,得判别返回的XML数据的正确性
71
var rootElement = domXml.documentElement;
72
if(rootElement == null || rootElement.nodeName != ""){
73
74
}else{
75
//数据正确返回时的代码处理
76
}
77
*/
78
}
79
}
80
}
81
</script>
82
</head>
83
<body>
84
username:<input type="text" id="username" /><br/>
85
password:<input type="password" id="password" /><br/>
86
<input type="button" value="submit" onclick="submit()" />
87
<div id="message"></div>
88
</body>
89
</html>
与之相关的服务器代码如下,关于这个Servelet类的配置在此省略。
1
package per.ajax.web;
2
3
import java.io.IOException;
4
import java.io.PrintWriter;
5
6
import javax.servlet.ServletException;
7
import javax.servlet.http.HttpServlet;
8
import javax.servlet.http.HttpServletRequest;
9
import javax.servlet.http.HttpServletResponse;
10
11
public class LoginServlet extends HttpServlet
{
12
13
@Override
14
public void service(HttpServletRequest request, HttpServletResponse response)
15
throws ServletException, IOException
{
16
String username = request.getParameter("username");
17
String password = request.getParameter("password");
18
if(!"jone".equals(username)||!"jone".equals(password))
{
19
response.setContentType("text/html; charset=ISO-8859-1");
20
PrintWriter pw = response.getWriter();
21
pw.print("<font color='red'>username or password is error!</font>");
22
}
23
}
24
}