如何从SessionID获取HttpSession对象?

Bah*_*aid 4 java servlets httpsession

我想根据某些事件使用户的会话无效.我存储了他们的sessionID,如何从这个ID获取他们的HttpSession?不推荐使用HttpSessionContext类,没有替换.

Nig*_*ger 6

已弃用的方法已弃用.但是你可以实现你的想法使用HttpSessionListener,当创建一个新会话时,将它存储在一个HashMap中,其中session id作为键,对象是实际的HttpSessionObject.你可以通过这个获得参考.

  • 如果您使用此方法,您将需要确保Map中的条目不会永远存在 - 否则可能会出现意外的内存泄漏/ GC问题.可能使用WeakMap或WeakReference (2认同)

ZZ *_*der 3

出于安全原因,Servlet 2.2 明确弃用了这一点,因此不应该有任何官方方法来执行此操作。不推荐,但如果您使用 Tomcat,可以尝试使用 Manager.findSession()。

我刚刚从我的应用程序中删除了 HttpSession。当许多服务器运行时,保持会话同步确实很困难。我们试图通过编写自己的管理器来调整它,但永远无法让它正常工作。最后,我们用大约 500 行代码编写了自己的会话实现,效果好多了。