通过 AJAX,JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象, JavaScript 可在不重载页面的情况与 Web 服务器交换数据。
AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。
实验中利用JSP+ajax来实现自动刷新页面,并读/写数据库中的数据。
下面介绍一下利用JSP+ajax来实现局部页面刷新的小例子:
处理ajax请求的jsp文件:ajax.jsp
-
<%@ page contentType="text/html; charset=gb2312" %>
-
<%
-
//设置输出信息的格式及字符集
-
response.setContentType("text/xml; charset=UTF-8");
-
response.setHeader("Cache-Control","no-cache");
-
out.println("<response>");
-
for(int i=0;i<2;i++){
-
out.println("<name>"+(int)(Math.random()*10)+
-
"号传感器</name>");
-
out.println("<count>" +(int)(Math.random()*100)+ "</count>");
-
}
-
out.println("</response>");
-
out.close();
-
%>
发送ajax请求的jsp文件:zx.jsp
-
<head>
-
<META http-equiv=Content-Type content="text/html; charset=gb2312">
-
</head>
-
<script language="javascript">
-
var XMLHttpReq;
-
//创建XMLHttpRequest对象
-
function createXMLHttpRequest() {
-
if(window.XMLHttpRequest) { //Mozilla 浏览器
-
XMLHttpReq = new XMLHttpRequest();
-
}
-
else if (window.ActiveXObject) { // IE浏览器
-
try {
-
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
-
} catch (e) {
-
try {
-
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
-
} catch (e) {}
-
}
-
}
-
}
-
//发送请求函数
-
function sendRequest() {
-
createXMLHttpRequest();
-
var url = "ajax.jsp";
-
XMLHttpReq.open("GET", url, true);
-
XMLHttpReq.onreadystatechange = processResponse;//指定响应函数
-
XMLHttpReq.send(null); // 发送请求
-
}
-
// 处理返回信息函数
-
function processResponse() {
-
if (XMLHttpReq.readyState == 4) { // 判断对象状态
-
if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
-
DisplayHot();
-
setTimeout("sendRequest()", 1000);
-
} else { //页面不正常
-
window.alert("您所请求的页面有异常。");
-
}
-
}
-
}
-
function DisplayHot() {
-
var name = XMLHttpReq.responseXML.getElementsByTagName("name")[0].firstChild.nodeValue;
-
var count = XMLHttpReq.responseXML.getElementsByTagName("count")[0].firstChild.nodeValue;
-
document.getElementById("product").innerHTML = name;
-
document.getElementById("count").innerHTML = count;
-
}
-
</script>
-
<body onload =sendRequest()>
-
<table style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width=200 bgColor=#f5efe7 border=0>
-
<TR>
-
<TD align=middle bgColor=#dbc2b0 height=19 colspan="2"><B>无线传感网</B> </TD>
-
</TR>
-
<tr>
-
<td height="20"> 传感器:</td>
-
<td height="20" id="product"> </td>
-
</tr>
-
<tr>
-
<td height="20">传感器个数:</td>
-
<td height="20" id="count"> </td>
-
</tr>
-
</body>
-
</table>