【问题标题】:How to store data in HTTP Session for a specific period of time?如何在特定时间段内将数据存储在 HTTP Session 中?
【发布时间】:2015-05-25 01:41:46
【问题描述】:

我们知道我们可以在 HTTP Session 中存储和检索数据。是否有开箱即用的方式将数据存储在 Session 中,会在一段时间后自动销毁(而 Session 仍然保留并保存其他数据)?

【问题讨论】:

  • 仔细阅读问题:“当 Session 仍然存在并保存其他数据时”
  • 啊,所以您希望会话中的不同值具有不同的超时时间。我第一次阅读时没有明白这一点。
  • 实现此目的的一种方法是在指定时间后使会话无效,然后立即创建一个新会话。这样做时,您可以只复制需要在会话中继续的数据。其他数据将与旧会话一起销毁。

标签: jakarta-ee servlets httpsession


【解决方案1】:

你不会免费得到这个。如果我需要这个特性并且有一个基于 spring 的应用程序,那么我可能会创建一个基于会话的 bean,它包含一些简单的缓存。懒惰,我可能会使用番石榴缓存:

https://code.google.com/p/guava-libraries/wiki/CachesExplained

如果我不使用 spring,我也会这样做,也许将缓存放在 ServletContext 上,并确保缓存键部分包含当前用户的某个标识符(如会话 id)。

您甚至可以将番石榴或其他缓存直接放在用户会话上(您可以在创建会话时这样做)。你的访问方法总是会感觉与访问你的裸会话有点不同。

根据您的 servlet 容器,您可以将会话实现替换为您自己的。

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2013-01-06
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多