java实时记录在线人数

该博客介绍了如何配置Servlet监听器来跟踪并记录网站的在线用户数量。通过实现HttpSessionListener接口,每当用户登录或登出时,监听器会更新一个HashMap来保存sessionID与登录用户ID的映射,并提供方法获取当前在线用户数。这有助于实时监控网站的用户活动。

1.配置过滤器

 <listener>
     <listener-class>com.listener.SessionCount</listener-class >
  </listener>

2.登陆时记录

package com.insigma.common.listener;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map.Entry;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class SessionCountListenerSH  implements  HttpSessionListener {

/**
     * 存储sessionid:登录用户ID集合
     */
    private static HashMap<String,String> sessioncount=new HashMap<String,String>();

/**
     * 获取sessionid:登录用户集合
     * 下午8:25:04
     * 2021年11月6日
     * @author wangzp
     * @return
     */
    public static HashMap<String,String> getSessionCount() {
        return sessioncount;
    }

/**
     * 获取登录数量
     * 下午8:22:57
     * 2021年11月6日
     * @author wangzp
     * @return
     */
    public static int getUniqueSessioCount(){
        HashSet<String> map=new HashSet<String>();
        for(Entry<String,String> e:sessioncount.entrySet()) {
            map.add(e.getValue());
        }
        return map.size();
    }
    

/**
     * 登录成功,记录
     */
    @Override
    public void sessionCreated(HttpSessionEvent arg0) {

//登录在线,则记录

        sessioncount.put(arg0.getSession().getId(), "登录用户ID")
    }

/**
     * 退出登录
     */

    @Override
    public void sessionDestroyed(HttpSessionEvent arg0) {
        sessioncount.remove(arg0.getSession().getId());
    }
        
}

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时间 流逝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值