帮助捕捉春季会话超时



我有一个简单的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。春天也许有自己的听众。你必须在这个全新的会话中放置一些东西来使你的请求工作。

相关内容

  • 没有找到相关文章

最新更新