利用HttpSessionListener实现网站在线人数统计功能

news/2024/4/28 6:03:06/文章来源:https://blog.csdn.net/hulefei29/article/details/3585061
  在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加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. <web-app>
  2.     ……
  3.     <listener>
  4.         <listener-class>
  5.             gongfei.cmc.articles.example.OnlineCounterListener
  6.         </listener-class>
  7.     </listener>
  8.     ……
  9. </web-app>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_820094.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

d3 mouseover Tips

本篇简单介绍d3 mouseover添加tips的实现 绘制曲线 以前几篇的d3曲线为例<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><div id"test-svg"></div></bo…

学习分类,可用网站

学习分类&#xff1a;可用网站&#xff1a;1>enet网络学院转载于:https://blog.51cto.com/18039121638/1285511

JQuery 的跨域方法 可跨任意网站

链接&#xff1a;http://www.cnblogs.com/taven/archive/2010/05/20/1739731.html 因发现有不少博友发园内短信问及JS的跨域问题&#xff0c;我想很多程序员的脑海里面还认为JS是不能跨域的&#xff0c;其实这是一个错误的观点&#xff1b;有很多人在网上找其解决方法&#xff…

网站用户单点登录系统简介-跨域通行证

1 背景 在网站建设的过程中&#xff0c;多个应用系统一般是在不同的时期开发完成的。各应用系统由于功能侧重、设计方法和开发技术有所不同&#xff0c;也就形成了各自独立的用户库和用户认证体系。随着网站的发展&#xff0c;会出现这样的用户群体&#xff1a;以其中的一个用户…

提高网站访问速度的方法汇总

以下方法都有在公司实际项目中应用&#xff0c;的确能够提升客户端体验和访问速度。 1、建议客户端使用Chrome或高版本IE浏览器&#xff1b; 2、能够实现静态化的页面尽量在服务器端保存静态页面&#xff0c;访问动态页面肯定会比静态页面慢。 3、减少HTTP请求 1&#xff09;合…

Joomla 一个实例建站过程

之前就想过写一个用 joomla的virtuemart组件制作外贸b2c零售网店的教程给大家分享&#xff0c;刚好最近要重新部署和策划公司的外贸b2c业务&#xff0c;趁着这个热乎劲&#xff0c;赶紧 把教程赶出来&#xff0c;不趁热打铁&#xff0c;很多事情是做不成的&#xff0c;大家都忙…

Microsoft Azure WebSite创建网站

Microsoft Azure WebSite是Microsoft Azure中PaaS平台既服务到一个重要组件&#xff0c;WebSite具有以下特点&#xff0c;方便我们WEB部署和上线发布l 入门简单&#xff0c;开始简单&#xff0c;可以按照你的想法扩展&#xff0c;无任何的困难。l 编码容易&#xff0c;可以使用…

禁止视频网站使用Flash P2P上传

众所周知中国的网络国情&#xff0c;还有一大部分人活在电信/网通这两个老流氓的adsl线路上。目前中国电信4m的ADSL基本在400k/s的下载速度和50k/s的上传速度&#xff08;这里我就不说bps了&#xff0c;就说大家能看到的下载速度&#xff09;&#xff0c;又由于ADSL的不对称速度…

查询类网站或成站长淘宝客新金矿

流量是玩转互联网的基础&#xff0c;传说的中的大牛一般都是倒腾流量的高手。在大牛眼中抓取流量是一门艺术&#xff0c;背后玩的是五花八门的思路。这篇文章斗胆跟大家分享一个好玩的思路。文章将以剥洋葱的方式展开&#xff0c;希望剥完这颗洋葱会让你有相见恨晚之感。在切入…

linux重装系统到sdb盘,linux怎样重装系统_网站服务器运转保护,linux,重装,系统

Linux体系原有分区/data 有数据&#xff0c;在不格式化/data分区的情况下重装体系需预备一台有/data 分区的虚拟机然后加载ISO 入手下手重装并保存/data分区直接加载到分区界面根据一入手下手得知/data分区是2048MB 所以直接挑选保存此分区免费在线进修视频教程引荐&#xff1a…

一天完成把PC网站改为自适应!原来这么简单!

http://www.webkaka.com/blog/archives/how-to-modify-a-web-page-to-be-responsive.html 一天完成把PC网站改为自适应&#xff01;原来这么简单&#xff01; 作者:Kaka 时间:2015-8-27 11:26:9 浏览:5279 评论:8 网站自适应&#xff0c;很多人都认为是很高级需要很多…

职业相关网站记录

为了便于查阅资料、拓展思路&#xff0c;特记录下与职业相关的网站&#xff0c;持续更新敢问路在何方&#xff1f;7成在努力&#xff0c;3成在觉悟&#xff01; 软件开发 .NET&#xff1a;博客园 http://www.cnblogs.com/ Java: ITEYE http://www.iteye.com/ 综合&#xff1a;C…

seoer在创业团队6个月的故事

今天天气不错&#xff0c;久违的阳光。自一个月前和朋友去踩单车环绕大夫山之后&#xff0c;就一直是雨天&#xff0c;阴天&#xff0c;广州这边春天本来就够潮湿的&#xff0c;春季没有在这边呆过的童鞋绝对无法想象&#xff0c;墙壁上流水&#xff0c;地上返潮是什么概念。今…

非常不错的app和网站

置顶&#xff1a; word、pdf之间相互转换的网站&#xff1a; https://www.addpdf.cn 很棒啊 1. Global Potplayer 这个软件简直了&#xff0c;播放各种视频&#xff0c; 无论是本地的&#xff0c;还是在线的&#xff0c;都非常的清晰还可以调节速度等&#xff0c;值得拥有。 效…

多年前写的一个ASP.NET网站管理系统,到现在有些公司在用

多年前写的一个ASP.NET网站管理系统&#xff0c;到现在有些公司在用 今早上接到一个电话&#xff0c;自已多年前写的一个ASP.NET网站管理系统&#xff0c;一个公司在用&#xff0c;出了点问题&#xff0c; 第一点是惊奇&#xff0c;5&#xff0c;6年前的东东&#xff0c;手机号…

前端开发必备优质网站

一、 平台名称&#xff1a;HTML5 Tricks 推荐指数&#xff1a;⭐⭐⭐⭐⭐ 推荐理由&#xff1a; 该站点发布了优秀的html5动态效果&#xff0c;相当经典&#xff0c;应有尽有&#xff0c;而且&#xff0c;特效超级绚丽&#xff0c;背后的知识点相当庞大&#xff0c;值得好好…

网站使用https协议的数据安全防护之谈

说起https协议&#xff0c;大家都不会太陌生&#xff0c;简单来讲就是SSL证书&#xff0c;当访问我们网站的时候会直接显示绿色的标识&#xff0c;对于用户的访问&#xff0c;以及数据传输都会进行高强度的安全加密&#xff0c;防止用户的数据泄露&#xff0c;数据安全防护也是…

40个学术网站

40个学术网站&#xff0c;满足你的科研需求&#xff01; 2018-03-06 美国留学那点事文&#xff0f;中外学术情报 微信号&#xff1a;Academic_Information 科研工作者每天日常莫过于看文献、做实验、写论文。人生最郁闷的事情不过于是导师说&#xff0c;那个XX&#xff0c;帮我…

网站分析实战--如何以数据驱动决策,提升网站价值(大数据时代的分析利器)...

《网站分析实战--如何以数据驱动决策&#xff0c;提升网站价值》&#xff08;大数据时代的分析利器&#xff09;基本信息作者&#xff1a; 王彦平 吴盛峰 出版社&#xff1a;电子工业出版社ISBN&#xff1a;9787121193125上架时间&#xff1a;2013-1-10出版日期&#xff1a;201…

vue 网站图标favcion.ico图标的处理

1.把.ico图标和index文件放在同级 2.在webpack.dev.conf.js和webpack.prod.conf.js这两个文件中进行如下修改&#xff1a; favicon: resolve(favicon.ico), function resolve(dir) {return path.join(__dirname, .., dir) } plugins: [new webpack.DefinePlugin({process.env:…