帮助在春季捕获会话超时

我有一个简单的Spring 3 MVC应用程序。 我正在使用sessionAttribute,一切正常,除非我让页面停留30分钟或更长时间。 然后我得到一个

org.springframework.web.HttpSessionRequiredException

告诉我在会话中找不到我的对象。

我想我需要在会话超时发生时以某种方式重定向回同一页面。 我不确定如何正确使用弹簧。

无需登录,我已经在检查对象是否为空。

任何建议,将不胜感激。

谢谢

您可以将错误页面绑定添加到HttpSessionRequiredException,它将重定向到应用程序中的第一页

例:

web.xml中

  org.springframework.web.HttpSessionRequiredException /index.jsp   

您无法将“重新定向到同一页面”。 您的会话已经消失,即您在客户端上的cookie不再对应于servlet容器中的任何会话,因为会话对象已从内存中删除。 完全,不可逆转。

您可以增加会话超时。 这是应用程序配置,而不是Spring:

web.xml中:

   120  

会给你两个小时的空闲时间。

请注意,会话不是免费的。 它们消耗资源(内存和磁盘,序列化时)。 如果同一个用户可以多次重新登录,他们将有多个空闲会话,并可能导致您的DoS。

PS如果你已经离开了会话,并且只想立即建立另一个会话,你总是可以在filter中做到,不管是不是Spring。 spring可能有自己的听众。 您必须在该全新会话中添加一些内容才能使您的请求正常运行。