AJAX的一个实时刷新的问题 JSP版 ^O^
我想用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>
我想用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>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货