Java通过遍历sessionId获取服务器所有会话session
Servlet2.1之后不支持SessionContext里面getSession(String id)方法,也不存在遍历所有会话Session的方法。但是,我们可以通过HttpSessionListener监听器和全局静态map自己实现一个SessionContext,然后用SessionContext管理一份服务器所有会话的Session。
1.web.xml添加一个监听器
- <listener>
- <listener-class>listener.MySessionListener</listener-class>
- </listener>
2.定义一个SessionContext:MySessionContext
- public class MySessionContext {
- private static HashMap mymap = new HashMap();
- public static synchronized void AddSession(HttpSession session) {
- if (session != null) {
- mymap.put(session.getId(), session);
- }
- }
- public static synchronized void DelSession(HttpSession session) {
- if (session != null) {
- mymap.remove(session.getId());
- }
- }
- public static synchronized HttpSession getSession(String session_id) {
- if (session_id == null)
- return null;
- return (HttpSession) mymap.get(session_id);
- }
- }
3.任何Session的创建和删除都用自己的SessionContext管理起来:MySessionListener
- public class MySessionListener implements HttpSessionListener {
- public void sessionCreated(HttpSessionEvent httpSessionEvent) {
- MySessionContext.AddSession(httpSessionEvent.getSession());
- }
- public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
- HttpSession session = httpSessionEvent.getSession();
- MySessionContext.DelSession(session);
- }
- }
然后就实现了任何时候都可以通过遍历SessionContext而得到所有会话的Session。
有什么用呢?你可以定期清理过时的Session呢!(注意,Session超时了以及你换地方登陆了并不会删除用户的Session,其只是Session对应的时间戳让你无法再使用对应的Session,或者是浏览器的Cookie丢失了原先浏览器里面存在的SessionId而已,因此定时清理Session也会让服务器内存压力小很多)。
Java通过遍历sessionId获取服务器所有会话session的更多相关文章
- Java根据HttpServletRequest请求获取服务器的IP地址
以下总结了两种根据HttpServletRequest请求获取发出请求浏览器客户端所在服务器的IP地址方法: 代码: import javax.servlet.http.HttpServletRequ ...
- JAVA记录-JSP页面获取服务器路径方式
1.basePath方式 <% String path = request.getContextPath(); String basePath = request.getScheme()+&qu ...
- java获取服务器IP地址及MAC地址的方法
这篇文章主要介绍了java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址的相关技巧,需要的朋友可以参考下 本文实例讲述了 ...
- java获取服务器路径
java获取服务器一些信息的方法(服务器地址/相对路径/端口/项目名字 request.getServletContext().getRealPath("/") 获取项目所在服务 ...
- Java通过sessionId获取Session
Servlet2.1之后不支持SessionContext里面getSession(String id)方法. 但是,我们可以通过HttpSessionListener监听器和全局静态map自己实现一 ...
- java中遍历实体类,获取属性名和属性值
方式一(实体类): //java中遍历实体类,获取属性名和属性值 public static void testReflect(Object model) throws Exception{ for ...
- java获取服务器基本信息
实现步骤: (1)创建servlet BrowserServer (2)调用HttpServletRequest对象的getServerName()方法获取服务器名称 (3)调用HttpServlet ...
- java获取服务器的ip和地址
HttpServletRequest httpRequest=(HttpServletRequest)request; String strBackUrl = "http://" ...
- java获取服务器一些信息的方法
request.getServletContext().getRealPath("/") 获取项目所在服务器的全路径,如:D:\Program Files\apache-tomca ...
随机推荐
- 1.ECS(CentOS7)主机名修改命令
命令:hostnamectl 使用--help参数查看hostnamectl里面每个参数对应的含义: [root@localhost ~]# hostnamectl --help Query or c ...
- Haskell语言学习笔记(76)Data.Tree
Data.Tree data Tree a = Node { rootLabel :: a, subForest :: Forest a } deriving (Eq, Read, Show) typ ...
- [Shell]Shell脚本的执行方式
---------------------------------------------------------------------------------------------------- ...
- rhel7磁盘管理
一.MBR主引导记录 MBR有512个字节,分为三个部分:第一部分446个字节,存储了引导分区:第二部分64字节为分区表:第三部分2个字节结束符:每个分区需16个字节,所以MBR的模式 ...
- hibernate criteria Restrictions工具类用法
CriteriaQuery cq = new CriteriaQuery(TSUser.class, dataGrid); // 查询条件组装器 org.jeecgframework.core.ext ...
- canvas入门笔记
1.Canvas的使用注意 A.要在页面中添加一对canvas标记,默认占300*150的区域 B.我们可以通过html属性‘width’,‘height’来设置canvas的宽高,不可以通过cs ...
- 吴裕雄 python 机器学习-DMT(1)
import numpy as np import operator as op from math import log def createDataSet(): dataSet = [[1, 1, ...
- Java8 Optional的简单操作
我们经常会遇到这种情况:首先判断一个对象是否为null,如果不为null,获取一个对象中的一个属性,如果该属性不为null,又获取该属性的属性,如果该属性的属性不为null,又获取属性的属性的属性: ...
- Pandas基础知识(一)
Pandas的主要结构有DataFrame和Series. 生成一个Series对象. 关于部分Series的索引操作. Series也可以通过字典生成. DataFrame是一个表格型的数据,它既有 ...
- Html----开头
Html开头 *<meta http-equiv='content-type' content='text/html;charset=utf-8'>*定义字符编码,这是必须有的 后另存为 ...