Java Web 应用开发案例|使用监听器统计 Web 站点的在线用户数
HttpSessionListener 监听器,主要用于监听 HttpSession 对象的生命期变化,如创建 session 和释放 session 事件。一个 session 代表一个在线用户,因此常用 HttpSessionListener 监听器跟踪管理在线用户。
复制代码
01、在线用户数统计
使用监听器,统计 Web 站点的在线用户数,操作步骤如下所述。
(1) 定义监听器 OnlineUserListerner。
复制代码
(2) 定义成员变量 userCount,用于记录在线用户数。
为了防止高并发产生影响,userCount 的数据类型为原子整数 AtomicInteger。
复制代码
(3) 新用户上线,触发 sessionCreated 事件。
复制代码
(4) 当 session 超时失效时,会触发 sessionDestroyed 事件。
复制代码
小结
HttpSessionListener 监听器默认为单例模式,在 Tomcat 启动时会自动创建监听器对象。因此,在线用户数可以使用成员变量记录。有些监听器不是单例模式,使用成员变量要非常小心。
用户主动退出系统,调用 HttpSession 的 invalidate()方法会销毁当前的 session,但是 Web 应用会自动创建另外一个会话对象,因此在线人数不会变。只有用户超时未操作,服务器主动删除 session 对象时,在线用户数才会减少。
版权声明: 本文为 InfoQ 作者【TiAmo】的原创文章。
原文链接:【http://xie.infoq.cn/article/98fff656d4fb3529ef26d0dd2】。文章转载请联系作者。
评论