java统计在线人数
在web.xml文件中添加
<!-- 统计在线 监听 --> <listener> <listener-class>com.connxun.config.listener.OnLineListener</listener-class> </listener>
然后新增对应路径的监听文件
package com.connxun.config.listener; import com.connxun.util.session.UserSession; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * 统计在线人数 * * @author gaoyf */ public class OnLineListener implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener {// 声明一个ServletContext对象 private ServletContext application = null; private static HashMap<String, UserSession> hashMap = new HashMap<String, UserSession>(); public void contextInitialized(ServletContextEvent sce) {// 容器初始化时,向application中存放一个空的容器 this.application = sce.getServletContext(); this.application.setAttribute("allUser", new ArrayList<UserSession>()); }public void contextDestroyed(ServletContextEvent sce) {}public void sessionCreated(HttpSessionEvent se) {UserSession userSession = (UserSession) se.getSession().getAttribute("userSession"); if (userSession != null) {hashMap.put(se.getSession().getId(), userSession); System.out.println("用户登录,当前用户总数:" + hashMap.size()); }System.out.println(se.getSession().getId()); }public void sessionDestroyed(HttpSessionEvent se) {// 将用户名称从列表中删除 List l = (List) this.application.getAttribute("allUser"); UserSession userSession = (UserSession) se.getSession().getAttribute("userSession"); if (userSession != null)l.remove(userSession); System.out.println("session过期,当前用户数:" + l.size()); this.application.setAttribute("allUser", l); System.out.println(se.getSession().getId()); if (hashMap.containsKey(se.getSession().getId())) {hashMap.remove(se.getSession().getId()); System.out.println("session自动销毁:" + hashMap.size()); }}public void attributeAdded(HttpSessionBindingEvent se) {// 如果登录成功,则将用户名保存在列表之中 List<UserSession> l = (List<UserSession>) this.application.getAttribute("allUser"); l.add((UserSession) se.getValue()); this.application.setAttribute("allUser", l); hashMap.put(se.getSession().getId(), (UserSession) se.getValue()); System.out.println(se.getSession().getId()); System.out.println("系统登录,当前用户数:" + hashMap.size()); UserSession userSession = (UserSession) se.getSession().getAttribute("userSession"); if (userSession != null) {System.out.println(se.getSession().getId()); hashMap.put(se.getSession().getId(), userSession); System.out.println("用户登录,当前用户总数:" + hashMap.size()); }}public void attributeRemoved(HttpSessionBindingEvent se) {List<UserSession> l = (List<UserSession>) this.application.getAttribute("allUser"); UserSession userSession = (UserSession) se.getValue(); if (userSession != null)l.remove(userSession); System.out.println(se.getSession().getId()); hashMap.remove(se.getSession().getId()); System.out.println("用户注销,当前用户数:" + hashMap.size()); this.application.setAttribute("allUser", l); }public void attributeReplaced(HttpSessionBindingEvent se) {}}
java统计在线人数相关推荐
- java统计在线人数并退出_统计在线人数以及在线人信息
通过监听Session对象的方式来实现在线人数的统计和在线人信息展示,并且让超时的自动销毁 1. web.xml http://java.sun.com/xml/ns/javaee/web-app_2 ...
- java统计在线人数_java统计当前在线数 (转)
java统计当前在线数 (转)[@more@] package com.hnedu.stat; /** * 计算在线人数,说明: * * 在访问页面放入: * com.hnedu.stat.Onlin ...
- java统计在线人数_java实现在线人数统计
然后再配置监听, web.xml配置: 1 2 com.test.OnlineUserListenerlistener-class> 3 listener> 一旦监听器发现调用了sessi ...
- java程序利用HttpSessionListener实现统计在线人数(示例代码)
HttpSessionListener是个session监听器,它有两个方法:publicvoidsessionCreated(HttpSessionEventevent){}和publicvoids ...
- java web 统计在线用户_Javaweb监听器实例之统计在线人数
本文实例为大家分享了Javaweb统计在线人数示的具体代码,供大家参考,具体内容如下 1. 实现功能 统计在线人数 显示每个人的sessionId.Ip.第一次登录时间 2. 运用监听器种类 Http ...
- java监听器(Listener)统计在线人数
使用java监听器统计在线人数 1. 监听器的简介 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法 ...
- Java如何实现统计在线人数的功能?
很多人在笔试或者面试中问到:现在要你实现一个统计在线人数的功能,你该怎么设计? 不知道的朋友,这篇文章告诉你. 先说答案:可以利用监听器Listener来实现 目录 1. 监听器的简介 2. Java ...
- java创建一个统计在线人数的监听器
1)创建一个OnLineCountListener监听器,统计在线人数 package xqyy.com.listener; import java.util.ArrayList; import ja ...
- java web 在线人数_java网页中怎样统计在线人数
展开全部 1.用session超时,session为null就表示下线了 2.也可以采用数据库中设置 临时表 来处理 一个用户登陆时向表中插进一62616964757a686964616fe4b893 ...
最新文章
- 线性时间选择问题——分治
- 基于WebForm的Front Controller模式框架
- 谱聚类(spectral clustering)原理总结
- 2019 牛客多校第三场 B Crazy Binary String
- PyTorch实战福利从入门到精通之七——卷积神经网络(LeNet)
- NoticeBoard 一个仿原生UI的消息通知控件
- 修改 Ubuntu SSH 登录后的欢迎信息
- linux系统查看分区文件系统
- 快速计算代码行小工具
- 服务器与客户端的简单实现
- Elasticsearch 7 Failed to parse value [analyzed] as only [true] or [false] are allowed.
- 功率谱密度的相关推导以及Python实现
- .net core Fleck WebSocket使用笔记
- ios 扫码枪外设 键盘模式_iPadOS 显威力,苹果 iPad Pro 终于用上带触控板的外接键盘...
- 如何搭建网站?第二步:购买服务器域名
- 了解什么是架构基本概念和架构本质
- window系统如何禁止运行指定程序
- 广义拉格朗日函数的理解
- [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
- 长波猝灭剂QSY 21NHS,304014-13-9,QSY21 活性酯特点有哪些
热门文章
- webp批量转换成jpg的方法
- 题目1205: 百万富翁问题
- ac3165无线网卡驱动linux,Linux下无法识别Intel Dual Band Wireless-AC 3165模块
- 【LeetCode】860. 柠檬水找零(C语言)
- 无线传屏软件发射端 +接收端(mirrorop sender Receiver) v1.2.0.6
- 哥德尔定理的正规表述
- 用HTML和CSS简单语法写的一个简历Demo
- 腾讯物联网操作系统TencentOS tiny线上移植大赛,王者机器人、QQ公仔、定制开发板等礼品等你来拿 !
- 快速部署Melodic开发环境
- 改变elementui卡片crad样式_修改ElementUI样式的几种方式