为什么80%的码农都做不了架构师?>>>   

在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加1,然后当用户点击退出按钮退出系统的时候计数器减1。这种处理方式存在一些缺点,例如:用户正常登录后,可能会忘记点击退出按钮,而直接关闭浏览器,导致计数器减1的操作没有及时执行;网站上还经常有一些内容是不需要登录就可以访问的,在这种情况下也无法使用上面的方法进行在线人数统计。

  我们可以利用Servlet规范中定义的事件监听器(Listener)来解决这个问题,实现更准确的在线人数统计功能。对每一个正在访问的用户,J2EE应用服务器会为其建立一个对应的HttpSession对象。当一个浏览器第一次访问网站的时候,J2EE应用服务器会新建一个HttpSession对象,并触发HttpSession创建事件,如果注册了HttpSessionListener事件监听器,则会调用HttpSessionListener事件监听器的sessionCreated方法。相反,当这个浏览器访问结束超时的时候,J2EE应用服务器会销毁相应的HttpSession对象,触发HttpSession销毁事件,同时调用所注册HttpSessionListener事件监听器的sessionDestroyed方法。

  可见,对应于一个用户访问的开始和结束,相应的有sessionCreated方法和sessionDestroyed方法执行。这样,我们只需要在HttpSessionListener实现类的sessionCreated方法中让计数器加1,在sessionDestroyed方法中让计数器减1,就轻松实现了网站在线人数的统计功能。

  下面就是利用HttpSessionListener实现在线人数统计的一个例子,这个例子已经在中创软件的J2EE应用服务器InforWeb中测试通过。

  首先,编写一个简单的计数器,代码如下:

  1. package gongfei.cmc.articles.onlinecounter;
  2. public class OnlineCounter {
  3. private static long online = 0;
  4. public static long getOnline() {
  5. return online;
  6. }
  7. public static void raise(){
  8. online++;
  9. }
  10. public static void reduce(){
  11. online--;
  12. }
  13. }

  然后,编写HttpSessionListener实现类,在这个实现类的sessionCreated方法中调用OnlineCounter的raise方法,在sessionDestroyed方法中调用OnlineCounter的reduce方法,代码如下:

  1. package gongfei.cmc.articles.onlinecounter;
  2. import javax.servlet.http.HttpSessionEvent;
  3. import javax.servlet.http.HttpSessionListener;
  4. public class OnlineCounterListener implements HttpSessionListener {
  5. public void sessionCreated(HttpSessionEvent hse) {
  6. OnlineCounter.raise();
  7. }
  8. public void sessionDestroyed(HttpSessionEvent hse) {
  9. OnlineCounter.reduce();
  10. }
  11. }

  再然后,把这个HttpSessionListener实现类注册到网站应用中,也就是在网站应用的web.xml中加入如下内容:

  1. ……
  2. gongfei.cmc.articles.example.OnlineCounterListener
  3. ……

转载于:https://my.oschina.net/hpujsj/blog/6821

利用HttpSessionListener实现网站在线人数统计功能相关推荐

  1. 利用监听器实现网站在线人数统计

    ServletContextListenerImpl.java代码 public class ServletContextListenerImpl implements ServletContextL ...

  2. java怎么快速创建监听类_java_利用java监听器实现在线人数统计,1.在工程中创建监听类SessionLi - phpStudy...

    利用java监听器实现在线人数统计 1.在工程中创建监听类SessionListener 并且实现HttpSessionListener接口,代码如下 import javax.servlet.htt ...

  3. Java监听器实现网站在线人数统计

    1.监听器定义 监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求.服务端的操作等.通过监听器,可以自动激发一些操作,比如监听在线的用户的数量. 2.常见的监听器 1)Ser ...

  4. 使用监听器Listener实现在线人数统计功能

    使用监听器Listener实现在线人数统计功能 目录树及使用的文件 1.首先创建一个CountListener类实现HttpSessionListener接口,实现接口的两个方法:sessionCre ...

  5. php页面在线人数,也谈php网站在线人数统计

    也谈php网站在线人数统计 function checkOnline($userid,$tempid=null) { $conn = connect(); //对于所有用户 //先设置自己为在线 $s ...

  6. Session实现网站在线人数统计

    Session统计网站在线人数 模仿一个B站左下角的人数在线统计: 1.实现一个Session监听器的接口,里面重写了俩个方法,一个是获取Session的方法,一个是销毁Session的方法.   2 ...

  7. 一分钟为网站添加统计功能

    首先我们需要选择第三方平台,推荐使用腾讯分析或者百度统计 为什么使用这些平台呢? 1.首先省事高效,我们不需要自己去开发这些功能,只需要一行代码粘贴到自己的网站中,就可以生效使用了: 2.第二点大公司 ...

  8. php redis 签到,如何利用 Redis 快速实现签到统计功能

    @这是小豪的第十一篇文章 上篇文章 已经对 Redis 基础命令进行了一个大致的学习,接下来我们就需要解决 Issue "增加用户活跃度统计" 啦! 其实当我看到这个 Issue ...

  9. c语言网络在线人数统计,教你用ASP程序实现网站在线人数统计

    欢迎来到小编的文章进行学习阅读,想必大家又有很多问题吧,在这里会有你想要收获的答案,请大家慢慢学习吧!计算机编程语言 在浏览网页的时侯,常常可以看见一些"当前网站上的人数是XXX人" ...

最新文章

  1. 集成学习-Adaboost
  2. php删除指定图片吗,PHP 去除图片指定颜色
  3. linux无显卡运行程序,Ubuntu中在应用程序菜单添加未显示的应用程序启动器
  4. Leetcode1702. 修改后的最大二进制字符串[C++题解]:思维题
  5. 简单的jQuery扩展函数-让函数缓冲执行
  6. JAVA 编程开发入门-张晨光-专题视频课程
  7. WEB前端 基础知识汇总
  8. 浏览器的一个请求从发送到返回都经历了什么?
  9. android UI布局
  10. JAVA进阶开发之(异常练习题)
  11. php微信支付接口开发程序(一)
  12. ActivityGroup 例子
  13. java管理员登录_登录界面的java代码,分别有教师登录,管理员登录,学生登录,右边是用户名和密码,见图。...
  14. 有谁知道iphone XR的“R”到底是什么意思?答案可能会让你们无奈
  15. 常见神经系统疾病的临床诊断及处理原则题库【2】
  16. 硕士毕业论文写不出来导致严重焦虑,怎么办?
  17. 首次揭秘 | 淘宝新发布的躺平如何做3D场景化导购?
  18. 《Cocos Creator游戏实战》滚动数字
  19. 拥有有趣灵魂的程序员们,程序员访谈(一)
  20. 镜头分辨率的计算和理解

热门文章

  1. 软件工程学习笔记《四》需求分析
  2. c++模板---1(模板概念,利用模板实现数组排序,函数模板调用规则)
  3. Linux 开发路线
  4. 【Linux系统编程学习】信号、信号集以其相关函数
  5. 1.rabbitmq 集群版安装及使用nginx进行四层负载均衡设置
  6. 【题解】HAOI2007分割矩阵
  7. hibernate Criteria(条件查询接口)
  8. AWS安装CDH5.3-CentOS6.4中关键操作步骤
  9. tensorflow一元二次函数拟合
  10. apache的产品分类说明