我想用XMlHttpRequest加上JSP的监听器作一个在线客户的无提交刷新 但是却一直搞不好 希望各位大侠能帮帮忙 还有就是show.jsp只显示2次 头一次显示正常 后面一次就只显示源代码了
监听器代码
package test;
import java.io.*;
import java.util.*;
import javax.servlet.http.*;
public class SessionListener implements HttpSessionListener,HttpSessionAttributeListener {
private static List list = new ArrayList();
public static int count = 0;
// HttpSessionListener
public void sessionCreated(HttpSessionEvent arg0) {
count++;
logout("创建:" + new Date().toString());
}
public void sessionDestroyed(HttpSessionEvent arg0) {
count--;
logout("销毁:" + new Date().toString());
}
public static int getCount() {
return count;
}
public void logout(String msg) {
PrintWriter out = null;
try {
out = new PrintWriter(new FileOutputStream("C:\\logout.txt", true));
out.println(msg);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
// HttpSessionAttributeListener
public void attributeAdded(HttpSessionBindingEvent arg0) {
if ("name".equals(arg0.getName())) {
list.add(arg0.getValue());
}
}
public void attributeRemoved(HttpSessionBindingEvent arg0) {
if ("name".equals(arg0.getName())) {
list.remove(arg0.getValue());
}
}
public void attributeReplaced(HttpSessionBindingEvent arg0) {
}
public static List getList() {
return list;
}
}
TestSessionAttributeListener.jsp
<body>
<%
String name = new String(request.getParameter("name"

.getBytes(
"ISO-8859-1"

, "GBK"

;
session.setAttribute("name", name);
out.print(name);
%>
<%
List list = SessionListener.getList();
out.println("共有" + list.size() + "名用户已登陆:"

;
for (int i = 0; i < list.size(); i++) {
out.println(list.get(i));
}
%>
</body>
TestSessionListener.jsp
<body>
<%=new Integer(SessionListener.getCount()).toString() %>
<form action="TestSessionAttributeListener.jsp">
<input type="text" name="name" />
<input type="submit" />
</form>
</body>
show.jsp
<script language="javascript">
function detect()
{
var xml;
try{
xml = new ActiveXObject("Microsoft.XMLHTTP"

;
}catch(e){
xml=new XMLHttpRequest();
}
xml.onreadystatechange=function(){
if(4==xml.readyState){
if(200==xml.status){
//window.alert("sssssssss"

;
}else if(404==xml.status){
//window.alert("zzzzzzzz"

;
}else if(500==xml.status){
//window.alert("bbbbbbb"

;
}else{
//window.alert("bbbbbbb"

;
}
}
}
var post="";//构造要携带的数据
xml.open("POST","show.jsp",true);//使用POST方法打开一个到服务器的连接,以异步方式通信
xml.setrequestheader("content-length",post.length);
xml.setrequestheader("content-type","application/x-www-form-urlencoded"

;
xml.send(post);//发送数据
var res = xml.responseText;//接收服务器返回的数据
list.innerText=res;
//setTimeout("detect()",1000);//每隔5秒钟轮询一次
}
</script>
</head>
<body onload="detect()">
<script type="text/javascript">
setInterval("detect()",1000);
</script>
<a id="list">
<%
List list = SessionListener.getList();
out.println("共有" + list.size() + "名用户已登陆:");
for (int i = 0; i < list.size(); i++) {
%>
<%=list.get(i)%>
<%}%>
</a>
</body>