使用HttpSessionListener监听器 监控当前网站在线人数

news/2024/5/20 2:38:26/文章来源:https://blog.csdn.net/gwpJava/article/details/18547931
ServletAPI提供了大量的监听器来监听WEB应用的内部事件,以下简单利用HttpSessionListener监听器来实现监控当前网站的在线人数。

相应代码如下:

[java] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package neo.app.servlet;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.Map;  
  5.   
  6. import javax.servlet.ServletContext;  
  7. import javax.servlet.http.HttpSession;  
  8. import javax.servlet.http.HttpSessionEvent;  
  9. import javax.servlet.http.HttpSessionListener;  
  10.   
  11. import neo.app.service.ServiceManager;  
  12. import neo.core.Constants;  
  13. import neo.core.bean.BeanManager;  
  14.   
  15. import org.apache.commons.logging.Log;  
  16. import org.apache.commons.logging.LogFactory;  
  17.   
  18. /** 
  19.  * 用于记录在线人数,用户退出日志写入 
  20.  * 
  21.  */  
  22. public class SessionListener implements HttpSessionListener {  
  23.     private final Log log = LogFactory.getLog(getClass());  
  24.     private final String COUNT_KEY = "sessions";  
  25.   
  26.     /** 
  27.      * session创建时执行的方法,用户登录时执行 
  28.      */  
  29.     public void sessionCreated(HttpSessionEvent event) {  
  30.         HttpSession session = event.getSession();  
  31.         ServletContext application = session.getServletContext();  
  32.   
  33.         // 在application范围由一个HashSet集保存所有的session   
  34.         HashSet sessions = (HashSet) application.getAttribute(COUNT_KEY);  
  35.         if (sessions == null) {  
  36.             sessions = new HashSet();  
  37.             application.setAttribute(COUNT_KEY, sessions);  
  38.         }  
  39.   
  40.         // 新创建的session均添加到HashSet集中   
  41.         sessions.add(session);  
  42.   
  43.         // 然后使用sessions.size()获取当前活动的session数,即为“在线人数”   
  44.         log.debug("sessionCreated 网站在线人数(含未登录的访问) 为:" + sessions.size());  
  45.   
  46.         //由于此处无法获得登录用户的IP信息  
  47.         //用户登录日志转向到用户登录action中完成  
  48.     }  
  49.   
  50.     /*** 
  51.      * session销毁时执行的方法,用户主动退出/浏览器关闭Session过期 时执行 
  52.      */  
  53.     public void sessionDestroyed(HttpSessionEvent event) {  
  54.         HttpSession session = event.getSession();  
  55.         ServletContext application = session.getServletContext();  
  56.         HashSet sessions = (HashSet) application.getAttribute(COUNT_KEY);  
  57.   
  58.         if (null != sessions && sessions.contains(session)) {  
  59.             Object userObj = session.getAttribute(Constants.LOGIN_USER);  
  60.             log.debug("userObj is:" + userObj);  
  61.             if (userObj != null) {//判断是否为登录后包含用户信息的数据(已经登录)  
  62.                 Map userMap = (Map) userObj;  
  63.                 String username = (String) userMap.get("username");  
  64.                 log.debug("用户" + username + "退出");  
  65.                 Long loginid = (Long) userMap.get(Constants.LOGIN_LOGID);  
  66.                 //调用memberService来进行用户退出日志写入  
  67.                 ((ServiceManager) BeanManager.getBean("serviceManager")).getMemberService().insertLogoutLog(loginid,  
  68.                         username);  
  69.             } else {//未进行登录  
  70.                 log.debug("session存在,但是尚未进行用户登录");  
  71.             }  
  72.         } else {  
  73.             //session已经不存在此退出对象了  
  74.             log.debug("session已经不存在此退出对象了");  
  75.         }  
  76.   
  77.         // 销毁的session均从HashSet集中移除   
  78.         if (sessions != null) {  
  79.             sessions.remove(session);  
  80.             //更新在线人数数据  
  81.             log.debug("sessionDestroyed 网站在线人数(含未登录的访问) 为:" + sessions.size());  
  82.         }  
  83.     }  
  84.   
  85. }  

当然最后别忘了在web.xml文件中对监听器进行配置,配置也很简单,如下

[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <listener>   
  2.        <listener-class>neo.app.servlet.SessionListener</listener-class>   
  3.    </listener>  

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

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

相关文章

我的网站有第一次的收入了

昨天我申请百度联盟成功了&#xff0c;今天登录百度联盟发现昨天的收入是3.96元&#xff0c;虽然很少&#xff0c;今天收录也掉了30多页 但我还是很高兴&#xff0c;从自学建站到自学SEO将近两年&#xff0c;终于有了第一次收入。 拿 出来献丑了&#xff0c;但是真的很高兴。还…

使用dede系统建设中英文双语网站详解

由于公司要我做一个中英文双语的企业站&#xff0c;而我已经使用DEDE系统把中文页面&#xff08; http://www.heatpress123.net &#xff09;都做好了而且已经有了排名所以想在原先的基础上添加一个英文页面&#xff0c;我也在网络上找了很多相关资料&#xff0c;说实话也得到…

百度快照的SEO意义,别再跟风了

所谓 百度快照指的是&#xff1a;几乎每个被百度收录的网页&#xff0c;在百度上都存有一个纯文本的备份文件存贮在百度服务器上&#xff0c;此文件被称为 百度快照。当用户在百度搜索引擎上试图打开某个搜索结果无法打开&#xff0c;或打开速度特别慢时&#xff0c;该网页的百…

Google收录一个新网站要花多久?

几个月前&#xff0c;SE圆桌发起一项调查&#xff0c;内容是“Google收录你的新站要花多久”。 在收到500份回复之后&#xff0c;统计结果已经出来了。 54%的人说1周内30%的人说1天内12%的人说1个月内3%的人说3个月内1%的人说超过3个月 这个站我北京时间2013年3月27日晚上开通并…

卢松松:响应式网页设计与SEO

所谓“响应式网页设计(Responsive Web Design)”也就是自适应&#xff0c;就是可以自动识别屏幕宽度、并做出相应调整的网页设计。目前这种设计已经出现在越来越多的国内网站上&#xff0c;目前Google已经明确表明鼓励响应式网页设计。 (图一&#xff0c;响应式网页设计) 通常在…

SEO实战:网站排名不靠外链靠基础

内容、外链是日常优化工作的必须&#xff0c;由于百度的绿萝算法把外链的质量进行的评估限定&#xff0c;使得一直以外链为主要SEO手段的网站受到了抨击。怎样的网站优化方式才能够让网站稳定&#xff0c;网站排名也能够提升呢?其实网站自身的质量更为重要。今天笔者小丹要分享…

网络经济中的行为模式、社交模式和网站运作周期

行为和思维&#xff0c;可以抽取成模式&#xff0c;就是传说中可以授人的渔。好的思路模式&#xff0c;可以引导别人成果。好的行为方式&#xff0c;可以提高效率&#xff0c;甚至导致商业成功。分析了#购买行为模式#&#xff0c;叶子节点上&#xff0c;就是“营销”层面可以影…

高质量的seo优化方案

作为一名seo&#xff0c;除了要懂得网站seo优化技术&#xff0c;还需要懂得如何分析网站各项数据&#xff0c;并根据分析结果写出一份高质量的seo优化方案&#xff0c;接下来&#xff0c;小刚seo就和大家说说一份高质量的seo优化方案是怎样炼成的。 一、SEO工作的核心所在 ①…

实现四六级网站的复刻

https://download.csdn.net/download/qq_41588302/11859004 还有报名也同四六级一样&#xff0c;我就懒得登了。 这是以前自己一个人花了很长时间&#xff0c;就凭着两本书&#xff0c;一直啃出来的。其中最有意思的是数据库的知识。

ASP.NET MVC项目发布与网站本地部署

1.ASP.NET MVC项目发布 实际就是以打包的方式将编译后的文件整理出来。 首先生成解决方案,保证没有保存. mvc项目—>右键—>发布: 点击发布,即可将项目打包到指定的路径下。 2.安装IIS: 控制面板—>程序—>启用或关闭Windows功能: IIS(Internet Information Se…

为IIS的多个网站设置不同的.net运行框架

在默认情况下&#xff0c;IIS6.0中的多个网站是不能设置为使用不同的.net框架的。但是我们有时候确实就会遇到这种问题&#xff0c;一个网站采用较老的2.0框架开发&#xff0c;而一个新网站采用的是4.0的框&#xff0c;而他们又需要部署在同一台服务器上。虽然IIS6.0可以为每个…

记一次网站备案

用了几个月的免费AWS&#xff0c;感觉非常好用&#xff0c;Amazon的技术实力确实一流&#xff0c;但是最近速度变得非常慢&#xff0c;也不知道是什么原因&#xff0c;于是就买了阿里云的云主机&#xff0c;那就得备案啊。很多人都是谈备案色变&#xff0c;论坛中也是一片骂娘的…

vs2010发布网站时有些文件没有发布出去的解决办法。

项目中包含了一些ttf字体文件做为图标使用&#xff0c;可是发布时发现生成的目录中没有这个文件&#xff0c;这种情况这么设置一下就可以解决&#xff1a; 1&#xff0c;在文件上点击右键&#xff0c;选择“属性”。 2&#xff0c;在弹出的属性窗口中&#xff0c;更改“生成操…

鉴赏毕业设计_基于JavaWeb的音乐网站

基于JavaWeb的音乐网站的设计与实现mysql数据库创建语句 基于JavaWeb的音乐网站的设计与实现oracle数据库创建语句 基于JavaWeb的音乐网站的设计与实现sqlserver数据库创建语句 基于JavaWeb的音乐网站的设计与实现springspringMVChibernate框架对象(javaBean,pojo)设计 基于Jav…

如何利用百度知道推广网站

一 利用百度知道推广网站的目的 利用百度知道推广网站的好处&#xff0c;主要有以下3点 1.通过百度知道带来一定的流量 百度很青睐自己的产品&#xff0c;很多关键词搜索之后&#xff0c;百度知道都是的内容都是排在第一位的。所以利用好百度知道&#xff0c;肯定可以带来一定的…

如何利用qq群来推广网站 经验分享

在部分行业&#xff0c;利用其他方式推广网站可能比利用seo可以获取的流量更多&#xff0c;比如我目前在做中国润滑油信息网&#xff0c;润滑油相关关键词每天搜索也就几千&#xff0c;如果想把流量有所突破&#xff0c;肯定要加大其他推广方式的比重&#xff0c;所以今天和大家…

网站敏感目录和文件

网站敏感目录和文件 Hack 9月4日 扫描网站目录结构&#xff0c;看看是否可以遍历目录&#xff0c;或者敏感文件泄漏 后台目录&#xff1a;弱口令&#xff0c;万能密码&#xff0c;爆破 安装包&#xff1a;获取数据库信息&#xff0c;甚至是网站源码 上传目录&#xff1a;截断…

史上最权威的人工智能学习网站推荐

AI学习资源推荐原则 权威&#xff1a;本文介绍的课程都是由国内外知名企业或高校推出的&#xff0c;课程内容的权威性、前沿性有保障。免费&#xff1a;课程基本都是免费的&#xff0c;就算收费也是象征性收1元那种。正版&#xff1a;所有课程资源都是发布者通过正规渠道发布的…

tomcat启用gzip压缩提高浏览网站的速度

一、场景 HTTP 压缩可以大大提高浏览网站的速度&#xff0c;它的原理是&#xff0c;在客户端请求网 页后&#xff0c;从服务器端将网页文件压缩&#xff0c;再下载到客户端&#xff0c;由客户端的浏览器负责解 压缩并浏览 对于Tomcat5.0以后的版本是支持对输出内容进行压缩的…

【工具 软件分享】 一些神奇的在线网站分享 (持续更新)

很多时候&#xff0c;使用在线网站就能解决很多问题&#xff0c;不需要再下载软件。下面这些网站绝对会有一些让你大开眼界&#xff1a; pdf相关 smallpdf 网址&#xff1a;点这里很出名的网站&#xff0c;效果也非常好&#xff1b; ilovepdf 网址&#xff1a;点这里能满…