当前位置: 首页 > 面试题库 >

如何从JSESSIONID加载Java HttpSession?

彭华皓
2023-03-14
问题内容

我想HttpSession通过JSESSIONID 获取Java 。可能吗?如果是,怎么办?


问题答案:

你需要收集所有在MapHttpSessionListener你自己。

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问题。

也就是说,这是一种 巨大的 气味。当然,解决 实际
功能需求的方法肯定比这更好;)正如我在您的后续问题中评论的那样:

这是您第二次询问一个在现实世界中永远不应该实践的问题。老实说,这一切都有味道。这是什么,您认为HttpSession
在服务器端与JSESSONID关联并在客户端获得JSESSIONID值的问题是“解决方案”?在新问题中对此进行详细说明,您将获得正确方法的答案。

认真点 我们不是在取笑您,我们只是在尝试向您提供正确的方向,以避免您的项目/网络应用由于安全漏洞和不良做法而中断,并且/或者您将被解雇。



 类似资料:
  • 问题内容: 我有一个处理多部分表单发布的servlet。该帖子实际上是由嵌入在页面中的Flash文件上传组件发布的。在某些浏览器中,Flash生成的POST不包含JSESSIONID,这使我无法在发布期间从会话中加载某些信息。 Flash上​​载组件的确在特殊格式字段中包含cookie和会话信息。使用此表单字段,我实际上可以检索JSESSIONID值。问题是,我不知道如何使用此JSESSIONID

  • 我在S3存储桶中有一堆针对不同环境的Springapplication.yml属性文件。我想从S3存储桶加载属性文件,以保证无状态配置。 如何让我的 spring-boot 应用程序加载这些属性,然后在应用程序启动时使其可用? 我使用的是Spring启动版本2.2.6.RELEASE和Java11。

  • 得到的结果为: 从请求中提取的最佳方法是什么?

  • 问题内容: 我正在为Android编写一个小相框应用程序,它使用opengl作为部分UI。这部分需要从flickr获取图像并将其加载到纹理中。我下面的代码大多数时候都可以使用,但是在从连接获取输入流和对流进行位图解码的位之间,它具有Thread.sleep()缺点: 我如何使用sleep()方法来支持具有逻辑意义的内容? 我正在不在模拟器中的三星银河标签上进行测试 问题答案: 这似乎不太理想,但是

  • 问题内容: 我是Java UI编程的新手。 如何在Java中从主类调用UI类 基本上 运行程序时如何加载GUI。目前,当我运行代码时什么也没有发生。 GUI CLass 根据评论中的要求,我已经上传了GUI类代码 问题答案:

  • 问题内容: 我正在使用hibernate创建一个jar。我曾经遇到过一个情况我需要更改设置(URL)的时候,所以我想加载这样 但是然后运行该项目,我得到这个异常 如何从课程路径以外的其他位置加载? 问题答案: 上课有方法 请尝试以下操作,它应该可以正常工作:) 不同之处在于您使用了一种方法,该方法期望类路径中的资源,但是所期望的却在其中,因此您可以传递它。