Session监听在线统计人数,简单的单点登录
来源:互联网 发布:淘宝店铺严重违规48分 编辑:程序博客网 时间:2024/05/29 08:52
import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class OaSessionListener implements HttpSessionListener {//保存sessionId和UserName的映射private static HashMap hUserName=new HashMap();@Overridepublic void sessionCreated(HttpSessionEvent arg0) {HttpSession session = arg0.getSession();ServletContext application = session.getServletContext();//把用户名放入在线列表,在application范围有一个List集保存所有的SessionList onlineUserList = (List) application.getAttribute("onlineUserList");// 第一次使用前,需要初始化if (onlineUserList == null) {onlineUserList = new ArrayList();application.setAttribute("onlineUserList", onlineUserList);}// 新创建的session均添加到List集中onlineUserList.add(onlineUserList);System.out.println("当前在线人数:" + onlineUserList.size() + "人");}@Overridepublic void sessionDestroyed(HttpSessionEvent arg0) {HttpSession session = arg0.getSession();ServletContext application = session.getServletContext();List onlineUserList = (List) application.getAttribute("onlineUserList"); //销毁的session均从List中移除onlineUserList.remove(onlineUserList);System.out.println("用户退出或登录超时之后用户在线人数:" + onlineUserList.size() + "人");}/** * TODO用于判断用户是否已经登录以及相应的处理方法 * @author Palm * @date 2016年7月27日 * @param session用户登录时的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 value = entry.getValue();if(value.equals(sUserName)){System.out.println("hUserName = "+value);hUserName.remove(key);}}//添加现在的SessionID和userNamehUserName.put(session.getId(), sUserName);System.out.println("hUserName = "+hUserName);}else{//如果用户没有登录过,直接添加到现在的SessionID和userNameflag=false;hUserName.put(session.getId(), sUserName);System.out.println("hUserName ="+hUserName);}return flag;} /** * isOnline-用于判断用户是否在线 * * @param session * HttpSession-登录的用户名称 * @return boolean-该用户是否在线的标志 */ public static boolean isOnline(HttpSession session) { boolean flag = true; if (hUserName.containsKey(session.getId())) { flag = true; } else { flag = false; } return flag; } }
0 0
- Session监听在线统计人数,简单的单点登录
- Session的监听,统计网站在线人数
- Session监听统计网站的在线人数HashSet
- javaEE - session简单应用-在线人数统计
- session统计在线人数
- 依赖于session的在线人数统计
- 统计登录成功后的在线人数
- 使用HttpSessionListener接口监听Session的创建和失效(可以用于统计在线人数)
- session统计在线人数,查看游客列表,登录人列表
- session监听器(可用于统计在线人数,了解系统当前已经登录的使用客户)
- 简单的网站在线人数统计
- Session、SessionListener、在线人数统计
- Session实现统计在线人数
- java session统计在线人数
- Session的监听以及单点登录整合
- 统计在线人数和登录人数
- java统计在线人数(session存储信息的)
- JSP基于session,application的在线人数统计
- C# 控制台捕获关闭事件的代码
- iOS 把UILabel的text设置成斜体
- 代码适配Masonry使用的详细介绍
- sublime里调整ecshop里dwt,lbi文件高亮显示代码
- 求素数 sdut oj 1468(欧拉筛)
- Session监听在线统计人数,简单的单点登录
- Java常见类
- VS2013未找到与约束Microsoft.VisualStudio.Utilities.IContentTypeRegistryService匹配的导出
- leetCode_Reverse Words in a String
- 中文乱码之最不易发觉的中文乱码!
- Jprofiler监控JVM性能
- [官翻] 隐藏状态栏
- MySQL优化之四--Mysql基准测试工具(mysqlslap、sysbench)
- [Ubuntu--Install]Ubuntu下安装Sublime Text编辑器