如何处理多人同时登录同一个账号以及如何统计在线人数和访问量?
来源:互联网 发布:卡牌游戏推荐 知乎 编辑:程序博客网 时间:2024/04/29 18:25
话不多说直接贴代码
public class SessionListener implements HttpSessionListener { // 保存session和username的映射 private static HashMap hUserName = new HashMap(); private int MaxSession; private int activeSession; public void sessionCreated(HttpSessionEvent se) { addSession(); } public void sessionDestroyed(HttpSessionEvent se) { delSession(); hUserName.remove(se.getSession().getId()); } /** * 判断用户是否已经登录及处理方法 * @author FuYuwei * @time 2014-9-19 下午07:57:39 * @param session * @param sUserName 登录名 * @return 用户是否已经登录的标志 */ public static boolean isAlreadyEnter(HttpSession session,String sUserName){ boolean flag = false; // 如果该用户已经登录过,则使用上次登录的用户掉线 if(hUserName.containsValue(sUserName)){ flag = true; // 遍历原来的hUserName,删除原来用户名对应的sessionId,即删除原来的sessionId和username Iterator iter = hUserName.entrySet().iterator(); while(iter.hasNext()){ Map.Entry entry = (Map.Entry)iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); if(((String)val).equals(sUserName)){ hUserName.remove(key); } } // 添加当前用户的sessionId和username hUserName.put(session.getId(), sUserName); } // 如果没有登录直接添加当前用户的sessionId和username else{ flag = false; hUserName.put(session.getId(),sUserName); } return flag; } /** * 判断用户是否在线 * @author FuYuwei * @time 2014-9-19 下午08:11:00 * @param session * @return */ public static boolean isOnline(HttpSession session){ boolean flag = true; if(hUserName.containsValue(session.getId())){ flag = true; } else{ flag = false; } return flag; } /** * OnlineSessionListener监听器(实现HttpSessionListener)接口来实现页面在线访问人数统计, * 当有用户访问到页面就会创建一个session,此时会触发public void sessionCreated(HttpSessionEvent se)方法, * 如果session失效,此时会触发public void sessionDestroyed(HttpSessionEvent se)方法。 * 在此方法里我们用OnlineList进行在线访问人数的统计 * @author FuYuwei * @time 2014-9-19 下午08:31:28 */ public void addSession(){ activeSession++; if(activeSession>=MaxSession){ MaxSession = activeSession; } } public void delSession(){ if(activeSession>0){ activeSession--; } } /** * 获取在线人数 * @author FuYuwei * @time 2014-9-20 下午03:36:58 * @return */ public int getActiveNum(){ return activeSession; } /** * 获取累计访问人数 * @author FuYuwei * @time 2014-9-20 下午03:37:30 * @return */ public int getMaxSessionNum(){ return MaxSession; }}
在Web.xml中配置监听如下:
<!-- 监听session --> <listener> <listener-class>com.think.SessionListener</listener-class> </listener>
1 0
- 如何处理多人同时登录同一个账号以及如何统计在线人数和访问量?
- 访问量和在线人数统计
- 如何实现在线人数统计和登录限制?
- 在线人数统计和总访问量统计
- 如何统计在线人数
- 如何统计在线人数
- 如何统计在线人数
- 统计java网站访问量和在线人数
- 统计在线人数和登录人数
- 如何保证同一个账号同时只能在一个设备登录,账号自动登录
- 如何统计在线的人数
- .net如何统计在线人数
- .Net如何统计在线人数
- .Net如何统计在线人数
- .net如何统计在线人数
- .Net如何统计在线人数
- .Net如何统计在线人数
- .Net如何统计在线人数
- 苹果常用证书 配置说明及制作图文教程
- VirtualBox CentOS 6.6 安装增强功能 VBOXADDITIONS
- 使用nohup让程序在远程主机后台运行
- CodeForces 118A. String Task
- java面向对象编程(一)
- 如何处理多人同时登录同一个账号以及如何统计在线人数和访问量?
- Python编程基础之十三Python执行环境
- OpenCms9学习笔记(一)——OpenCms9简介
- C#调用百度地图API经验
- opencv
- oracle表空间统计及修改表空间大小
- 算法学习-动态规划
- Excel使用ADO调用SQL Server存储过程
- [Java][机器学习]用决策树分类算法对Iris花数据集进行处理