【发布时间】:2011-10-27 08:53:03
【问题描述】:
如何处理 Spring MVC 中过期的会话以及处理它的最佳位置是什么?我在哪里可以指定会话超时?如果你能举个例子给我看看就好了。
【问题讨论】:
标签: java session spring-mvc session-timeout
如何处理 Spring MVC 中过期的会话以及处理它的最佳位置是什么?我在哪里可以指定会话超时?如果你能举个例子给我看看就好了。
【问题讨论】:
标签: java session spring-mvc session-timeout
对于会话超时,我使用的是“普通”Servlet API。
在 web.xml 和方法 sessionCreated 中定义的自定义 javax.servlet.http.HttpSessionListener 使用 setMaxInactiveInterval(在 [s] 中)设置超时。
我知道这是“老派”,但很简单,适合我。
如果你想从 spring 中获取超时值,可以从 session 中访问 ServletContext。
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(session.getServletContext());
applicationContext.getBean("...");
【讨论】:
org.springframework.web.servlet.HandlerInterceptor [Spring MVC 方式]
一种选择是使用event mechanism in ApplicationContext,然后您将在 web.xml 中注册一个 HttpSessionListener,当会话超时时,它会在根 WebApplicationContext 中向所有观察该事件的 bean 触发事件。使用 WebApplicationContextUtils 获取根 WebApplicationContext。
【讨论】: