Servlet2.1之后不支持SessionContext里面getSession(String id)方法,也不存在遍历所有会话Session的方法。但是,我们可以通过HttpSessionListener监听器和全局静态map自己实现一个SessionContext,然后用SessionContext管理一份服务器所有会话的Session。

1.web.xml添加一个监听器

  1. <listener>
  2. <listener-class>listener.MySessionListener</listener-class>
  3. </listener>

2.定义一个SessionContext:MySessionContext

  1. public class MySessionContext {
  2. private static HashMap mymap = new HashMap();
  3. public static synchronized void AddSession(HttpSession session) {
  4. if (session != null) {
  5. mymap.put(session.getId(), session);
  6. }
  7. }
  8. public static synchronized void DelSession(HttpSession session) {
  9. if (session != null) {
  10. mymap.remove(session.getId());
  11. }
  12. }
  13. public static synchronized HttpSession getSession(String session_id) {
  14. if (session_id == null)
  15. return null;
  16. return (HttpSession) mymap.get(session_id);
  17. }
  18. }

3.任何Session的创建和删除都用自己的SessionContext管理起来:MySessionListener

  1. public class MySessionListener implements HttpSessionListener {
  2. public void sessionCreated(HttpSessionEvent httpSessionEvent) {
  3.   MySessionContext.AddSession(httpSessionEvent.getSession());
  4. }
  5. public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
  6. HttpSession session = httpSessionEvent.getSession();
  7. MySessionContext.DelSession(session);
  8. }
  9. }

  然后就实现了任何时候都可以通过遍历SessionContext而得到所有会话的Session。

  有什么用呢?你可以定期清理过时的Session呢!(注意,Session超时了以及你换地方登陆了并不会删除用户的Session,其只是Session对应的时间戳让你无法再使用对应的Session,或者是浏览器的Cookie丢失了原先浏览器里面存在的SessionId而已,因此定时清理Session也会让服务器内存压力小很多)。

Java通过遍历sessionId获取服务器所有会话session的更多相关文章

  1. Java根据HttpServletRequest请求获取服务器的IP地址

    以下总结了两种根据HttpServletRequest请求获取发出请求浏览器客户端所在服务器的IP地址方法: 代码: import javax.servlet.http.HttpServletRequ ...

  2. JAVA记录-JSP页面获取服务器路径方式

    1.basePath方式 <% String path = request.getContextPath(); String basePath = request.getScheme()+&qu ...

  3. java获取服务器IP地址及MAC地址的方法

    这篇文章主要介绍了java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址的相关技巧,需要的朋友可以参考下   本文实例讲述了 ...

  4. java获取服务器路径

    java获取服务器一些信息的方法(服务器地址/相对路径/端口/项目名字 request.getServletContext().getRealPath("/")  获取项目所在服务 ...

  5. Java通过sessionId获取Session

    Servlet2.1之后不支持SessionContext里面getSession(String id)方法. 但是,我们可以通过HttpSessionListener监听器和全局静态map自己实现一 ...

  6. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值 public static void testReflect(Object model) throws Exception{ for ...

  7. java获取服务器基本信息

    实现步骤: (1)创建servlet BrowserServer (2)调用HttpServletRequest对象的getServerName()方法获取服务器名称 (3)调用HttpServlet ...

  8. java获取服务器的ip和地址

    HttpServletRequest httpRequest=(HttpServletRequest)request; String strBackUrl = "http://" ...

  9. java获取服务器一些信息的方法

    request.getServletContext().getRealPath("/") 获取项目所在服务器的全路径,如:D:\Program Files\apache-tomca ...

随机推荐

  1. 1.ECS(CentOS7)主机名修改命令

    命令:hostnamectl 使用--help参数查看hostnamectl里面每个参数对应的含义: [root@localhost ~]# hostnamectl --help Query or c ...

  2. Haskell语言学习笔记(76)Data.Tree

    Data.Tree data Tree a = Node { rootLabel :: a, subForest :: Forest a } deriving (Eq, Read, Show) typ ...

  3. [Shell]Shell脚本的执行方式

    ---------------------------------------------------------------------------------------------------- ...

  4. rhel7磁盘管理

     一.MBR主引导记录        MBR有512个字节,分为三个部分:第一部分446个字节,存储了引导分区:第二部分64字节为分区表:第三部分2个字节结束符:每个分区需16个字节,所以MBR的模式 ...

  5. hibernate criteria Restrictions工具类用法

    CriteriaQuery cq = new CriteriaQuery(TSUser.class, dataGrid); // 查询条件组装器 org.jeecgframework.core.ext ...

  6. canvas入门笔记

    1.Canvas的使用注意  A.要在页面中添加一对canvas标记,默认占300*150的区域  B.我们可以通过html属性‘width’,‘height’来设置canvas的宽高,不可以通过cs ...

  7. 吴裕雄 python 机器学习-DMT(1)

    import numpy as np import operator as op from math import log def createDataSet(): dataSet = [[1, 1, ...

  8. Java8 Optional的简单操作

    我们经常会遇到这种情况:首先判断一个对象是否为null,如果不为null,获取一个对象中的一个属性,如果该属性不为null,又获取该属性的属性,如果该属性的属性不为null,又获取属性的属性的属性: ...

  9. Pandas基础知识(一)

    Pandas的主要结构有DataFrame和Series. 生成一个Series对象. 关于部分Series的索引操作. Series也可以通过字典生成. DataFrame是一个表格型的数据,它既有 ...

  10. Html----开头

     Html开头 *<meta http-equiv='content-type' content='text/html;charset=utf-8'>*定义字符编码,这是必须有的 后另存为 ...