博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过 监听器获取sessionId
阅读量:4680 次
发布时间:2019-06-09

本文共 1819 字,大约阅读时间需要 6 分钟。

1 package shopping; 2  3 import java.util.HashMap; 4 import java.util.Map; 5  6 import javax.servlet.http.HttpSession; 7 import javax.servlet.http.HttpSessionEvent; 8 import javax.servlet.http.HttpSessionListener; 9 /**10  * 通过sessionId获取session11  * HttpSessionListener:创建一个监听器监听session的创建和摧毁12  * 13  * 如果用户重新新建了一个浏览器窗口,这样也可以解决了14  * 15  */16 public class SiteSession implements HttpSessionListener {17     //静态变量能够一直保存18     /*19      * String:sessionId20      * session如果超时不能被垃圾回收器所回收,因为一直被静态变量所引用,将不会被回收21      * 如果超时希望删除session的话,需要通过静态变量 Map
sessions来解决sessionDestroyed方法,以防止内存泄漏22 */23 private static Map
sessions = new HashMap
();24 25 public void sessionCreated(HttpSessionEvent sessionEvent) {26 sessions.put(sessionEvent.getSession().getId(), sessionEvent.getSession());27 }28 29 public void sessionDestroyed(HttpSessionEvent sessionEvent) {30 sessions.remove(sessionEvent.getSession().getId());31 }32 33 /**34 * 只要知道用户的sessionId 就可通过该方法获取原先用户的session35 * @param sessionID :session的id号36 * @return37 */38 public static HttpSession getSession(String sessionID){39 return sessions.get(sessionID);40 }41 42 }
1  
2
3
shopping.SiteSession
4
1 如果acion采用: 2 request.getSession().getAttribute("cart",new Date()); 3 的方式打开两个浏览器窗口的话,将不能获取同一个session对象 4  5 解决办法: 6 String sId = request.getParameter("sessionId"); 7 HttpSession session = SitSessionListener.getSession(sId); 8 if(session == null ){ 9     request.getSession().setAttribute("cart",new Date);10 }else{11     session().getAttribute("message",session.getAttribute("cart"));12 }13 就可以解决打开两个窗口但捕获的不是同一个session

 

 

转载于:https://www.cnblogs.com/a757956132/p/4108698.html

你可能感兴趣的文章
UVa540 Team Queue
查看>>
android 练习之路 (八)
查看>>
hdu 1709
查看>>
【腾讯IMWeb前端训练营】 Vuejs todoList demo
查看>>
C语言博客作业04--数组
查看>>
postEvent() @ triggerEvent
查看>>
js数组操作
查看>>
FlexSlider是一个非常出色的jQuery滑动切换插件
查看>>
mysql插入中文报错
查看>>
tp5 中 model 的聚合查询
查看>>
android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications...
查看>>
几种内核对象的受信与非受信状态
查看>>
压缩文件函数库(转载)
查看>>
【转】ubuntu12.04没有/var/log/messages解决
查看>>
几种队列
查看>>
Oracle EBS 初始化用户密码
查看>>
SYS_CONTEXT 详细用法
查看>>
Pycharm配置autopep8让Python代码更符合pep8规范
查看>>
函数的复写
查看>>
17_重入锁ReentrantLock
查看>>