我有一个简单的Spring 3 MVC应用程序。我使用的是sessionAttribute,除了当我让页面放置30分钟或更长时间时,一切正常。然后我得到一个春季帮助捕捉会话超时
org.springframework.web.HttpSessionRequiredException
告诉我,我的目标不是在会议上找到。
我想我需要以某种方式在会话超时发生时重定向回到同一页面。我不确定如何正确使用弹簧来做到这一点。
没有登录要求,我已经检查对象是否为空。
任何建议,将不胜感激。
感谢
我有一个简单的Spring 3 MVC应用程序。我使用的是sessionAttribute,除了当我让页面放置30分钟或更长时间时,一切正常。然后我得到一个春季帮助捕捉会话超时
org.springframework.web.HttpSessionRequiredException
告诉我,我的目标不是在会议上找到。
我想我需要以某种方式在会话超时发生时重定向回到同一页面。我不确定如何正确使用弹簧来做到这一点。
没有登录要求,我已经检查对象是否为空。
任何建议,将不胜感激。
感谢
您可以添加错误页面结合HttpSessionRequiredException将重定向到第一页在应用程序中
例如:
的web.xml
<web-app>
<error-page>
<exception-type>org.springframework.web.HttpSessionRequiredException</exception-type>
<location>/index.jsp</location>
</error-page>
</web-app>
有是不是你可以只重定向“回到同一页面”。你的会话不见了,这就是你在客户端上的cookie不再对应于servlet容器中的任何会话,因为会话对象已从内存中删除。完全不可逆转。
您可能会增加会话超时。这是应用程序的配置,而不是春:
的web.xml:
<session-config>
<session-timeout>120</session-timeout>
</session-config>
会给你2小时空闲会话。
请注意,会话不是免费的。它们消耗资源(序列化时内存和磁盘)。如果同一用户可以多次重新登录,他们将有多个空闲会话,并可能导致您的DoS。
P.S.如果你没有了会话,只想立即建立另一个会话,你总是可以在一个过滤器中完成它,不管是否是Spring。春天可能有自己的听众。您必须在全新的会话中添加一些内容才能使您的请求有效。
您能举个例子吗? – blong824 2011-04-12 22:30:59
我发布了我的建议 – smas 2011-04-12 22:35:08
感谢这看起来像它的工作。我只是想让我的错误页面正确映射。从我注意到的情况来看,它看起来会通过spring调度器servlet映射回来,所以我需要在我的一个控制器中添加映射以访问此页面? – blong824 2011-04-13 20:16:40