java实时记录在线人数
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());
?? ?}
?? ??? ?
}
總結
以上是生活随笔為你收集整理的java实时记录在线人数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java遍历文件夹并获取所有路径
- 下一篇: java复制单个文件