如何从JSESSIONID加载Java HttpSession?
2022-09-03 00:03:12
我想通过JSESSIONID获得Java。可能吗?如果是,如何?HttpSession
我想通过JSESSIONID获得Java。可能吗?如果是,如何?HttpSession
您基本上需要自己使用HttpSessionListener
在Map
中手动收集它们。
@WebListener
public class HttpSessionCollector implements HttpSessionListener {
private static final Map<String, HttpSession> SESSIONS = new ConcurrentHashMap<>();
@Override
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
SESSIONS.put(session.getId(), session);
}
@Override
public void sessionDestroyed(HttpSessionEvent event) {
SESSIONS.remove(event.getSession().getId());
}
public static HttpSession find(String sessionId) {
return SESSIONS.get(sessionId);
}
}
然后,任何你想做的事情只是为了得到有问题的。HttpSessionCollector.find(sessionId)
HttpSession
也就是说,这是一个巨大的气味。当然,有比这更好的方法来解决实际的功能需求;)正如我在你的后续问题中评论的那样:
这是你第二次问一个在现实世界中永远不应该练习的问题。老实说,这一切都闻起来了。这是什么,您认为在服务器端获取与JSESSONID相关联并在客户端获取JSESSIONID值是“解决方案”的问题是什么?在一个新问题中详细说明这一点,您将获得有关如何以正确方式进行操作的答案。
HttpSession
认真对待。我们不是在嘲笑你,我们只是试图帮助你朝着正确的方向前进,以避免你的项目/Webapp会因为安全漏洞和不良做法而崩溃和/或你会被解雇。
您可以按照BalusC的答案进行操作,但是这种设施的存在是不同用户之间的初步安全漏洞。您不应该将这样的东西构建到您的应用程序中。