我有一个简单的Spring 3 MVC应用程序。我正在使用sessionAttribute,一切正常,除非我让页面停留30分钟或更长时间。然后我得到了一个
org.springframework.web.HttpSessionRequiredException
告诉我在会话中找不到我的对象。
我在想,当发生会话超时时,我需要以某种方式重定向回同一页面。我不确定如何正确使用弹簧。
无需登录,我已经在检查对象是否为空。
任何建议都将不胜感激。
由于
答案 0 :(得分:7)
您可以将错误页面绑定添加到HttpSessionRequiredException,它将重定向到您应用程序中的第一页
示例:强>
的web.xml
<web-app>
<error-page>
<exception-type>org.springframework.web.HttpSessionRequiredException</exception-type>
<location>/index.jsp</location>
</error-page>
</web-app>
答案 1 :(得分:0)
您无法将“重定向”重定向到同一页面。您的会话已经消失,即您在客户端上的cookie不再对应于servlet容器中的任何会话,因为会话对象已从内存中删除。完全不可逆转。
您可以增加会话超时。这是应用程序配置,而不是Spring:
的web.xml:
<session-config>
<session-timeout>120</session-timeout>
</session-config>
会给你两个小时的空闲时间。
请注意,会话不是免费的。它们消耗资源(内存和磁盘,序列化时)。如果同一个用户可以多次重新登录,他们将有多个空闲会话,并可能导致您的DoS。
P.S。如果你已经离开了会话,并且只想立即建立另一个会话,你总是可以在过滤器中做到,不管是不是Spring。春天可能有自己的听众。您必须在该全新会话中添加一些内容才能使您的请求有效。