利用DWR框架反向AJAX技术实现Web模式的实时在线用户计数的应用实例.docx
- 文档编号:13887232
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:18
- 大小:245.46KB
利用DWR框架反向AJAX技术实现Web模式的实时在线用户计数的应用实例.docx
《利用DWR框架反向AJAX技术实现Web模式的实时在线用户计数的应用实例.docx》由会员分享,可在线阅读,更多相关《利用DWR框架反向AJAX技术实现Web模式的实时在线用户计数的应用实例.docx(18页珍藏版)》请在冰点文库上搜索。
利用DWR框架反向AJAX技术实现Web模式的实时在线用户计数的应用实例
1.1利用DWR框架反向AJAX技术实现Web模式的实时在线用户计数的应用实例
1.1.1在示例项目的服务器端相关程序及配置文件的功能实现示例
1、在项目的系统部署描述web.xml文件中配置定义出回传(PiggyBack)方式
2、在示例项目中添加一个在线用户计数的程序组件
(1)程序类名称为OnLineCounter,程序包名称为com.px1987.webcrm.util
(2)编程该计数器类——本示例采用单例模式实现
packagecom.px1987.webcrm.util;
publicclassOnLineCounter{
privateintonlineUserCounter=0;//不再需要设置为static类型的变量
privatestaticOnLineCounteroneOnLineCounter=null;//
(1)
privateOnLineCounter(){//
(2)
}
publicstaticOnLineCounternewInstance(){//(3)
if(oneOnLineCounter==null){
oneOnLineCounter=newOnLineCounter();
}
returnoneOnLineCounter;
}
/*下面的所有方法不再需要设置为static方法
*/
publicsynchronizedvoidincrementCounter(){
onlineUserCounter++;
}
publicsynchronizedvoidreduceCounter(){
if(onlineUserCounter==0){
return;
}
onlineUserCounter--;
}
publicsynchronizedintgetOnLineUserCounter(){
returnonlineUserCounter;
}
}
3、在示例项目中添加一个记数组件的代理组件类
(1)程序类名称为OnLineCounterProxy,程序包名称为com.px1987.webcrm.util
(2)编程OnLineCounterProxy程序类
packagecom.px1987.webcrm.util;
importorg.directwebremoting.Browser;
importorg.directwebremoting.ScriptSessions;
publicclassOnLineCounterProxy{
publicOnLineCounterProxy(){
}
privateintonlineUserCounter;
publicvoidpiggyBackOnLineUserCounterToClient(){
onlineUserCounter=OnLineCounter.newInstance().getOnLineUserCounter();
Browser.withCurrentPage(newRunnable(){//启用监听客户端当前页线程
publicvoidrun(){//把数据添加到客户端调用的方法中
ScriptSessions.addFunctionCall("receiveOnLineUserCounterFromServer",
newInteger(onlineUserCounter));
}
});
}
}
在该类的piggyBackOnLineUserCounterToClient方法中回调客户端页面中指定的名称(本示例为receiveOnLineUserCounterFromServer)的JavaScript函数。
4、编程实现对HttpSessionListener事件监听器程序
(1)在项目中添加一个HttpSessionListener事件监听器程序类
类名称为OnLineCounterListener,包名称为com.px1987.webcrm.listener,实现javax.servlet.http.HttpSessionListener、javax.servlet.http.HttpSessionAttributeListener接口
(2)将产生出下面的程序结果
(3)编程OnLineCounterListener程序类中的功能实现方法
packagecom.px1987.webcrm.listener;
importjavax.servlet.http.HttpSessionAttributeListener;
importjavax.servlet.http.HttpSessionBindingEvent;
importjavax.servlet.http.HttpSessionEvent;
importjavax.servlet.http.HttpSessionListener;
importcom.px1987.webcrm.util.OnLineCounter;
publicclassOnLineCounterListenerimplementsHttpSessionListener,
HttpSessionAttributeListener{
publicOnLineCounterListener(){
}
publicvoidsessionCreated(HttpSessionEventarg0){//创建会话
OnLineCounter.newInstance().incrementCounter();
}
publicvoidsessionDestroyed(HttpSessionEventarg0){//结束会话
OnLineCounter.newInstance().reduceCounter();
}
publicvoidattributeAdded(HttpSessionBindingEventevent){
}
publicvoidattributeRemoved(HttpSessionBindingEventevent){
}
publicvoidattributeReplaced(HttpSessionBindingEventarg0){
}
}
由于session监听的是HTTP连接,只要有用户与后台服务器连接,就算连接的是一个空白的JSP页面,也会触发session事件,所以此处的session实际上指的是连接数(Connection)。
而如果还需要监控登录者的用户名达到显示在线用户名列表,则需要编程attributeAdded和attributeReplaced等方法。
(4)部署OnLineCounterListener监听器程序
5、在示例项目中新建dwr.xml配置定义文件
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEdwrPUBLIC"-//GetAheadLimited//DTDDirectWebRemoting3.0//EN""http:
//getahead.org/dwr/dwr30.dtd">
6、进入DWR的在线客户端测试页
(1)http:
//127.0.0.1:
8080/webcrm/dwr/index.html
(2)测试piggyBackOnLineUserCounterToClient方法的正确性
但页面会有错误,因为DWR的在线测试页不支持反向AJAX技术的测试。
1.1.2示例项目中客户端相关的程序及文件实例
1、在页面中(authorInfo.jsp)定位显示在线计数的标签
<%@pageisELIgnored="false"pageEncoding="GB18030"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
rel="stylesheet"type="text/css"/> src='${pageContext.request.contextPath}/dwr/interface/JOnLineCounterProxy.js'> src='${pageContext.request.contextPath}/dwr/engine.js'> src='${pageContext.request.contextPath}/dwr/util.js'> JOnLineCounterProxy.piggyBackOnLineUserCounterToClient(); functionreceiveOnLineUserCounterFromServer(onLineUserCounterFromServer){ document.getElementById("onLineUserCounterSpanTagID").innerHTML =onLineUserCounterFromServer; } 版权所有: 蓝梦集团网络信息资源中心,中国最优秀的J2EE平台开源社区,提供丰富的B2B和B2C平台下的各种技术资料和在线服务
目前在线人数是:
在线登录的用户名:
Admin