【问题标题】:"Global HttpSession" in javajava中的“全局HttpSession”
【发布时间】:2014-07-31 18:18:50
【问题描述】:

例如,我有 5 个不同的用户登录了我的应用程序。每个帐户都有一个保存在我的数据库中的会话 ID。但是,我想不时检查每个会话 ID 是否处于活动状态。

我打算创建一个包含所有登录用户会话的某种全局容器,这可能吗?因此,当我想检查时,我将查看容器并检查会话是否处于活动状态,如果没有,我将尝试创建一个新的或注销相应的用户。

如果您有任何建议,我愿意倾听(阅读)。

【问题讨论】:

  • 为什么?空闲超时后,容器将使会话失效。
  • 您不能使用控制器中的任何类变量吗?或使用数据库中的任何表(创建一个名为 global_session 的表)?
  • 这是基于现有框架(如 Tomcat 或 J2EE)还是您自己编写的?
  • @DiegoPolidoSantana,如果我有桌子,我可以存储我的会话 ID 吗? ..我可以从会话 ID 中获取会话状态吗? (我会尝试搜索是否可以。)

标签: java httpsession


【解决方案1】:

如果会话不活动,你想做什么?

如果你想注销会话的用户处于非活动状态,那么只需在 web.xml 中配置会话超时

<session-config>
    <session-timeout>5</session-timeout>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

这里的超时设置为 5 分钟。 5 分钟不活动后,用户将被注销。

【讨论】:

  • 这个可以通过HttpSessionListener sessionDestroyed来处理吧?
  • 可以,用那个方法可以处理。
【解决方案2】:

每次用户访问会话时,您都可以将当前时间戳存储在数据库中。

要查找非活动会话,您可以查询旧时间戳。

【讨论】:

    【解决方案3】:

    我的一个朋友解决了我的难题,

    用户的每个会话 ID都保存在数据库中,并创建了会话映射。地图中只有具有有效会话 ID 的登录用户;否则,他们将被注销。

    【讨论】:

    • 这在某种程度上是 EJP 和 Diego 的集成。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-11-25
    • 2011-07-05
    • 2017-12-20
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多