我有一个简单的Spring 3 MVC应用程序。我使用的是sessionAttribute,除了让页面停留30分钟或更长时间外,一切都很好。然后我得到一个
org.springframework.web。HttpSessionRequiredException
告诉我在会话中没有找到我的对象。
我在想,当会话超时发生时,我需要以某种方式重定向回同一页面。我不确定如何正确地使用spring。
不需要登录,我已经在检查对象是否为空。
如有任何建议,不胜感激。
谢谢
你可以添加错误页面绑定到httpessionrequiredexception,它将重定向到应用程序的第一页
例子:
web . xml
<web-app>
<error-page>
<exception-type>org.springframework.web.HttpSessionRequiredException</exception-type>
<location>/index.jsp</location>
</error-page>
</web-app>
你无法将"重定向回同一页面"。您的会话消失了,也就是说您在客户机上拥有的cookie不再与servlet容器中的任何会话对应,因为会话对象已从内存中删除。完全不可逆转。
您可以增加会话超时时间。这是应用程序配置,不是Spring:
web . xml:
<session-config>
<session-timeout>120</session-timeout>
</session-config>
将给您两个小时的空闲会话。
注意会话不是空闲的。它们消耗资源(序列化时的内存和磁盘)。如果同一个用户可以多次重新登录,他们将有多个空闲会话,并可能导致DoS。
注:如果您对已经消失的会话感到满意,并且只想立即建立另一个会话,那么您总是可以在过滤器中完成它,无论是否使用Spring。春天也许有自己的听众。你必须在这个全新的会话中放置一些东西来使你的请求工作。