【问题标题】:What happens with the spring controller @SessionAttribute when session get timeout当会话超时时,弹簧控制器@SessionAttribute 会发生什么
【发布时间】:2016-06-21 11:19:58
【问题描述】:

我的控制器@SessionAttribute("sample_dto") 中有一个会话属性。即使在会话超时后,我也需要使用 sample_dto。正确执行此操作的方法是什么。

PS:当会话超时时,浏览器被重定向到登录屏幕。我该如何避免它并将其带回会话超时之前的位置。

谢谢

【问题讨论】:

  • 当问一个由你的代码引起的问题时,如果你提供人们可以用来重现问题的代码,你会得到更好的答案(最小工作示例)

标签: java spring spring-mvc


【解决方案1】:

根据您的问题,我认为您不需要会话属性。因为您需要在两者之间访问相同的数据项 单独的会话。最简单的解决方案是使用普通的实例变量。因为你的控制器默认是单例的。 它类似于应用程序范围,因为您不更改控制器的范围,也不重新启动应用程序。

如果此任务是特定于用户的(您的数据项应该基于每个用户持续存在),那么您可以使用 cookie 来保存临时用户状态。 为了设置 cookie,您可以实现自己的 HttpSessionListener 类,并且在 sessionDestroyed 方法中,您可以保存 cookie。 因为只有在会话被破坏(超时)时才需要执行此操作。

如果你的数据更大,那么你可以通过引用相关用户将数据保存在数据库中。您可以使用相同的 sessionDestroyed 方法。

【讨论】:

    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 2017-03-13
    • 2018-07-07
    • 1970-01-01
    • 2020-03-29
    • 2021-08-02
    • 1970-01-01
    • 2011-12-10
    相关资源
    最近更新 更多