如何根据sessionID获取session

转载自:https://blog.csdn.net/dennis19910627/article/details/45112615?locationNum=1&fps=1

根据sessionID有一个比较简单的方法,使用session上下文即可

[java]  view plain  copy
  1. HttpSession sess = session.getSessionContext().getSession(sid)  

不过很可惜,java之后处于安全性考虑,不建议使用这个方法,虽然我不知道为什么对安全性会有影响,但是既然java不建议用了,那我们怎么办,毕竟大牛多,下面来分享一个方法,使用session监听器配合一个静态的hashmap即可实现。

上代码


==============HLL的分割线==================


首先,创建自己的sessionContext


[java]  view plain  copy
  1. public class MySessionContext {  
  2.     private static MySessionContext instance;  
  3.     private HashMap<String,HttpSession> sessionMap;  
  4.   
  5.     private MySessionContext() {  
  6.         sessionMap = new HashMap<String,HttpSession>();  
  7.     }  
  8.   
  9.     public static MySessionContext getInstance() {  
  10.         if (instance == null) {  
  11.             instance = new MySessionContext();  
  12.         }  
  13.         return instance;  
  14.     }  
  15.   
  16.     public synchronized void addSession(HttpSession session) {  
  17.         if (session != null) {  
  18.             sessionMap.put(session.getId(), session);  
  19.         }  
  20.     }  
  21.   
  22.     public synchronized void delSession(HttpSession session) {  
  23.         if (session != null) {  
  24.             sessionMap.remove(session.getId());  
  25.         }  
  26.     }  
  27.   
  28.     public synchronized HttpSession getSession(String sessionID) {  
  29.         if (sessionID == null) {  
  30.             return null;  
  31.         }  
  32.         return sessionMap.get(sessionID);  
  33.     }  
  34.   
  35. }  

然后建立session监听,要实现HttpSessionListener接口


[java]  view plain  copy
  1. public class SessionListener implements HttpSessionListener {  
  2.       
  3.     private MySessionContext myc = MySessionContext.getInstance();  
  4.       
  5.     public void sessionCreated(HttpSessionEvent httpSessionEvent) {  
  6.         HttpSession session = httpSessionEvent.getSession();  
  7.         myc.addSession(session);  
  8.     }  
  9.   
  10.     public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {  
  11.         HttpSession session = httpSessionEvent.getSession();  
  12.         myc.delSession(session);  
  13.     }  
  14.   
  15. }  

接着,在web.xml中配置session监听器


[html]  view plain  copy
  1. <listener>  
  2.     <listener-class>SessionListener</listener-class>  
  3. </listener>  

完事,大功告成,之后在代码中直接获取就OK了


[java]  view plain  copy
  1. MySessionContext myc= MySessionContext.getInstance();  
  2. HttpSession sess = myc.getSession(sessionId);  

OK,第一篇博客,就到这吧,收!!!!!!
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值