跟我学AJAX技术应用AJAX技术实现Web网站的实时在线用户计数的应用示例第一部分.docx
《跟我学AJAX技术应用AJAX技术实现Web网站的实时在线用户计数的应用示例第一部分.docx》由会员分享,可在线阅读,更多相关《跟我学AJAX技术应用AJAX技术实现Web网站的实时在线用户计数的应用示例第一部分.docx(18页珍藏版)》请在冰豆网上搜索。
![跟我学AJAX技术应用AJAX技术实现Web网站的实时在线用户计数的应用示例第一部分.docx](https://file1.bdocx.com/fileroot1/2023-2/5/c19cfed1-088d-4c4e-b182-4883b1a78747/c19cfed1-088d-4c4e-b182-4883b1a787471.gif)
跟我学AJAX技术应用AJAX技术实现Web网站的实时在线用户计数的应用示例第一部分
1.1跟我学AJAX技术——应用AJAX技术实现Web网站的实时在线用户计数的应用示例(第一部分)
1.1.1统计“在线用户计数”项目开发思路
1、系统需求----“做什么”
准确统计“在线用户计数”,但要注意需求示经常会变化的!
2、系统分析----“分析和理解需求”
(1)在线?
(2)计数----数值并显示输出
3、系统设计----“如何做”、考虑技术的实现细节
(1)Web方式的技术实现
(2)采用监听器组件技术
(3)监听器应该监听什么?
HttpSession
(4)如何及时(准确)计数?
AJAX----DWR框架
(5)如何识别用户是否离开?
4、编程实现
测试驱动开发(TDD)
5、测试
(1)单元测试
如果出现错误的状态
(2)集成测试
6、部署(在用户的环境中安装系统)
1.1.2常规的显示在线用户数的功能实现
1、添加一个在线用户计数的组件
(1)类名称为OnLineCounter,包名称为com.px1987.webcrm.util
(2)编程该计数器类
packagecom.px1987.webcrm.util;
publicclassOnLineCounter{
privatestaticintonlineUserCounter=0;//体现共享
publicstaticsynchronizedvoidincrementCounter(){
OnLineCounter.onlineUserCounter++;
}
publicstaticsynchronizedvoidreduceCounter(){
if(OnLineCounter.onlineUserCounter==0){
return;
}
OnLineCounter.onlineUserCounter--;
}
publicstaticsynchronizedintgetOnLineUserCounter(){
returnOnLineCounter.onlineUserCounter;
}
}
(3)改进的实现方法
上面实现的方法是应用static!
?
它是面向过程技术中的,应该采用面向对象!
有没有其他的方法能够满足上面的要求?
采用“单例对象”创建技术---某个类只能创建出该类的一个对象实例
packagecom.px1987.webcrm.util;
publicclassOnLineCounter{
privateintonlineUserCounter=0;//不再需要设置为static类型的变量
privatestaticOnLineCounteroneOnLineCounter=null;//
(1)
privateOnLineCounter(){//
(2)
}
publicstaticOnLineCounternewInstance(){//(3)
if(oneOnLineCounter==null){
oneOnLineCounter=newOnLineCounter();
}
returnoneOnLineCounter;
}
/*下面的所有方法也不再需要设置为static方法
*/
publicsynchronizedvoidincrementCounter(){
oneOnLineCounter.onlineUserCounter++;
}
publicsynchronizedvoidreduceCounter(){
if(oneOnLineCounter.onlineUserCounter==0){
return;
}
oneOnLineCounter.onlineUserCounter--;
}
publicsynchronizedintgetOnLineUserCounter(){
returnoneOnLineCounter.onlineUserCounter;
}
}
2、编程实现对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.model.vo.UserInfoVO;
importcom.px1987.webcrm.util.OnLineCounter;
publicclassOnLineCounterListenerimplementsHttpSessionListener,HttpSessionAttributeListener{
publicOnLineCounterListener(){
}
@Override
publicvoidsessionCreated(HttpSessionEventarg0){//创建会话
OnLineCounter.incrementCounter();
}
@Override
publicvoidsessionDestroyed(HttpSessionEventarg0){//结束会话
OnLineCounter.reduceCounter();
}
@Override
publicvoidattributeAdded(HttpSessionBindingEventevent){
}
@Override
publicvoidattributeRemoved(HttpSessionBindingEventevent){
}
@Override
publicvoidattributeReplaced(HttpSessionBindingEventarg0){
}
}
由于session监听的是HTTP连接,只要有用户与后台服务器连接,就算连接的是一个空白的JSP页面,也会触发session事件,所以此处的session实际上指的是连接数(Connection)。
(4)部署该监听器
com.px1987.webcrm.listener.OnLineCounterListener
3、在页面中定位显示计数的标签authorInfo.jsp
<%@pagepageEncoding="GB18030"%>
<%@taglibprefix="c"uri="
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
版权信息页
版权所有:
蓝梦集团网络信息资源中心,中国最优秀的J2EE平台开源社区,提供丰富的B2B和B2C平台下的各种技术资料和在线服务
北京ICP备0123456789号
网站统计
站长统计