在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统计在线人数相关推荐

  1. java统计在线人数并退出_统计在线人数以及在线人信息

    通过监听Session对象的方式来实现在线人数的统计和在线人信息展示,并且让超时的自动销毁 1. web.xml http://java.sun.com/xml/ns/javaee/web-app_2 ...

  2. java统计在线人数_java统计当前在线数 (转)

    java统计当前在线数 (转)[@more@] package com.hnedu.stat; /** * 计算在线人数,说明: * * 在访问页面放入: * com.hnedu.stat.Onlin ...

  3. java统计在线人数_java实现在线人数统计

    然后再配置监听, web.xml配置: 1 2 com.test.OnlineUserListenerlistener-class> 3 listener> 一旦监听器发现调用了sessi ...

  4. java程序利用HttpSessionListener实现统计在线人数(示例代码)

    HttpSessionListener是个session监听器,它有两个方法:publicvoidsessionCreated(HttpSessionEventevent){}和publicvoids ...

  5. java web 统计在线用户_Javaweb监听器实例之统计在线人数

    本文实例为大家分享了Javaweb统计在线人数示的具体代码,供大家参考,具体内容如下 1. 实现功能 统计在线人数 显示每个人的sessionId.Ip.第一次登录时间 2. 运用监听器种类 Http ...

  6. java监听器(Listener)统计在线人数

    使用java监听器统计在线人数 1. 监听器的简介 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法 ...

  7. Java如何实现统计在线人数的功能?

    很多人在笔试或者面试中问到:现在要你实现一个统计在线人数的功能,你该怎么设计? 不知道的朋友,这篇文章告诉你. 先说答案:可以利用监听器Listener来实现 目录 1. 监听器的简介 2. Java ...

  8. java创建一个统计在线人数的监听器

    1)创建一个OnLineCountListener监听器,统计在线人数 package xqyy.com.listener; import java.util.ArrayList; import ja ...

  9. java web 在线人数_java网页中怎样统计在线人数

    展开全部 1.用session超时,session为null就表示下线了 2.也可以采用数据库中设置 临时表 来处理 一个用户登陆时向表中插进一62616964757a686964616fe4b893 ...

最新文章

  1. 线性时间选择问题——分治
  2. 基于WebForm的Front Controller模式框架
  3. 谱聚类(spectral clustering)原理总结
  4. 2019 牛客多校第三场 B Crazy Binary String
  5. PyTorch实战福利从入门到精通之七——卷积神经网络(LeNet)
  6. NoticeBoard 一个仿原生UI的消息通知控件
  7. 修改 Ubuntu SSH 登录后的欢迎信息
  8. linux系统查看分区文件系统
  9. 快速计算代码行小工具
  10. 服务器与客户端的简单实现
  11. Elasticsearch 7 Failed to parse value [analyzed] as only [true] or [false] are allowed.
  12. 功率谱密度的相关推导以及Python实现
  13. .net core Fleck WebSocket使用笔记
  14. ios 扫码枪外设 键盘模式_iPadOS 显威力,苹果 iPad Pro 终于用上带触控板的外接键盘...
  15. 如何搭建网站?第二步:购买服务器域名
  16. 了解什么是架构基本概念和架构本质
  17. window系统如何禁止运行指定程序
  18. 广义拉格朗日函数的理解
  19. [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
  20. 长波猝灭剂QSY 21NHS,304014-13-9,QSY21 活性酯特点有哪些

热门文章

  1. webp批量转换成jpg的方法
  2. 题目1205: 百万富翁问题
  3. ac3165无线网卡驱动linux,Linux下无法识别Intel Dual Band Wireless-AC 3165模块
  4. 【LeetCode】860. 柠檬水找零(C语言)
  5. 无线传屏软件发射端 +接收端(mirrorop sender Receiver) v1.2.0.6
  6. 哥德尔定理的正规表述
  7. 用HTML和CSS简单语法写的一个简历Demo
  8. 腾讯物联网操作系统TencentOS tiny线上移植大赛,王者机器人、QQ公仔、定制开发板等礼品等你来拿 !
  9. 快速部署Melodic开发环境
  10. 改变elementui卡片crad样式_修改ElementUI样式的几种方式