代码之家  ›  专栏  ›  技术社区  ›  Tushar Ahirrao

如何从JSeStUID中加载JavaHypStIP?

  •  13
  • Tushar Ahirrao  · 技术社区  · 14 年前

    我想得到Java HttpSession 通过JSSESSID。有可能吗?如果是,怎么办?

    3 回复  |  直到 11 年前
        1
  •  27
  •   Community leo1    7 年前

    你需要把它们全部收集到 Map 使用A HttpSessionListener 你自己。

    public class HttpSessionCollector implements HttpSessionListener {
        private static final Map<String, HttpSession> sessions = new HashMap<String, HttpSession>();
    
        @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);
        }
    
    }
    

    把它登记在 web.xml 如下运行:

    <listener>
        <listener-class>com.example.HttpSessionCollector</listener-class>
    </listener>
    

    那么,你想去哪儿都行 HttpSessionCollector.find(sessionId) 得到 HttpSession 有问题。


    也就是说,这是一个 巨大的 嗅觉。当然有更好的方法来解决 实际的 功能需求比这更重要;)正如我在您的 follow-up question :

    这是你第二次问一个现实世界中永远不应该练习的问题。老实说,这一切都很难闻。是什么,你认为的问题是 会话 与服务器端的jsessonid关联,在客户端获取jsessionid值是“解决方案”?在一个新的问题中详细说明这一点,您将得到如何正确地执行它的答案。

    严肃点。我们不是在取笑你,我们只是在帮助你朝正确的方向前进,以避免你的项目/webapp因为安全漏洞和不好的做法而崩溃,和/或你会被解雇。

        2
  •  1
  •   skaffman    14 年前

    不,API不允许这样做。

    我想说得更多,但这就是一切。

        3
  •  1
  •   user207421    14 年前

    你可以这样做,但这样一个设施的存在是 表面上的 不同用户之间的安全漏洞。您不应该在应用程序中构建这样的东西。