当会话获取超时时,Spring控制器@SessionAttribute会发生什么

时间:2016-06-21 11:19:58

标签: java spring spring-mvc

我的控制器@SessionAttribute中有一个session属性(" sample_dto")。即使在会话获取超时后我也需要使用sample_dto。有什么方法可以做到这一点。

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

谢谢

1 个答案:

答案 0 :(得分:11)

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

如果此任务是特定于用户的(您的数据项应以每个用户为基础),则可以使用cookie来保存临时用户状态。 为了设置cookie,您可以实现自己的HttpSessionListener类,并且在sessionDestroyed方法中,您可以保存cookie。 因为只有在会话被销毁(超时)时才需要这样做。

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