index页面把onLineCount.jsp给include进来,onLineCount.jsp每隔一段时间刷新一次从数据库中统计数据,很显然这个方法非常的错误,onLineCount.jsp每次刷新的同时index整个页面也要刷新,首页数据量大的情况下肯定不行。而且还出现了一个我更郁闷的问题
:用户a登录后页面显示a的相关信息,用户b
登录后应该显示b的相关信息,如果把刷新的间隔时间设的短假如10秒钟,那么在服务器反映慢的情况下,如果a
已经登录并显示a的内容,但是刚好在b登录的时候,a页面正好刷新,等b登陆成功后b的页面显示b的信息,但这个时候a的页面也显示了b的信息,如果我把这个间隔的时间设长,加入1分钟,即使服务器再慢1分钟应该反映的过来吧,这样就没有出现乱套的问题,如果间隔时间为10秒,服务器反映够快,也不会出现乱套的情况。
于是还得想办法,ajax以前经常听说,实际中也没用过那么就用这个试一下,结果发现还真的像传说中的那么好用
Count.jsp
language=”java” %>
import=”cn.sh.guanghua.mediamex.common.CountServlet”%>
import=”cn.sh.guanghua.mediamex.db.dataunit.MonitorServer”%>
import=”cn.sh.guanghua.mediamex.common.Db”%>
import=”java.util.List”%>
import=”cn.sh.guanghua.monitor.SnmpValueObject”%>
import=”java.util.Hashtable”%>
import=”cn.sh.guanghua.mediamex.common.OnlineCounter”%>
long monitorServer_Id=1;
MonitorServer monitorServer=(MonitorServer)
Db.monitorServer().getObject(monitorServer_Id);
String strIp;
String strCommunity;
long port;
long type;
long timeout;
long version;
strIp=monitorServer.getMonitorServerIp();
strCommunity=monitorServer.getMonitorServerCommunity();
port=monitorServer.getMonitorServerSnmpPort();
type=monitorServer.getMonitorServerType();
timeout=monitorServer.getMonitorServerTimeout();
version=monitorServer.getMonitorServerVersion();
List
result=Db.monitorItem().getSnmpValue(type,port,strIp,strCommunity,version,timeout);
SnmpValueObject snmp=null;
//onlineUsercount
// int
onlineUserCount=OnlineCounter.getOnline();
int
onlineUserCount=Db.sivaUsers().geOnlineCount();
%>
var
getOnline=setInterval(“send_request()”,2000);
var http_request = false;
function send_request()
{//初始化、指定处理函数、发送请求的函数
http_request = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest) { //Mozilla
浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{//设置MiME类别
http_request.overrideMimeType(‘text/xml’);
}
}
else if (window.ActiveXObject) { //
IE浏览器
try {
http_request = new
ActiveXObject(“Msxml2.XMLHTTP”);
} catch (e)
{
try {
http_request = new
ActiveXObject(“Microsoft.XMLHTTP”);
} catch (e)
{}
}
}
if (!http_request) { //
异常,创建对象实例失败
window.alert(“不能创建XMLHttpRequest对象实例.”);
return false;
}
http_request.onreadystatechange
= processRequest;
//
确定发送请求的方式和URL以及是否同步执行下段代码
http_request.open(“post”,
‘getCount.jsp’,
true);
http_request.send(null);
}
// 处理返回信息的函数
function processRequest()
{
if
(http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { //
信息已经成功返回,开始处理信息
//alert(http_request.responseText);
onlineCount.innerHTML=http_request.responseText;
} else { //页面不正常
alert(“您所请求的页面有异常。”);
}
}
}
文章转载请注明来源。新辉网主页 > 网页基础 > Javascript/Ajax >
标题:setInterval定时调用ajax实现在线人数统计
地址:http://www.a55.com.cn/a/1662.html
关键词:setInterval定时调用ajax实现在线人数统计_无梦