第一步,配置 web.xml
- <span style="font-size:18px;"> <session-config>
- <session-timeout>15</session-timeout>
- </session-config>
- </span>
第二步,配置spring-mvc.xml
- <span style="font-size:18px;"><!-- Session失效拦截 -->
- <mvc:interceptors>
- <!-- 定义拦截器 -->
- <mvc:interceptor>
- <!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller -->
- <mvc:mapping path="/**" />
- <!-- 不需要拦截的地址 -->
- <mvc:exclude-mapping path="/login.do" />
- <bean class="com.cm.contract.controller.annotation.GEISSSessionTimeoutInterceptor"></bean>
- </mvc:interceptor>
- </mvc:interceptors>
- </span>
第三步,写拦截器SystemSessionInterceptor 方法
- public class SystemSessionInterceptor implements HandlerInterceptor {
- private static final String LOGIN_URL="/jsp/sessionrun.jsp";
- @Override
- public void postHandle(HttpServletRequest request,
- HttpServletResponse response, Object handler,
- ModelAndView modelAndView) throws Exception {
- }
- @Override
- public void afterCompletion(HttpServletRequest request,
- HttpServletResponse response, Object handler, Exception ex)
- throws Exception {
- }
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
- Object handler) throws Exception {
- HttpSession session=request.getSession(true);
- //session中获取用户名信息
- Object obj = session.getAttribute(CMConstant.LOGINUSER);
- if (obj==null||"".equals(obj.toString())) {
- response.sendRedirect(request.getSession().getServletContext().getContextPath()+LOGIN_URL;
- return false;
- }
- return true;
- }
- <span style="white-space:pre"> </span><body>
- <SCRIPT language="JavaScript">
- alert("用户已在其他地方登陆,请重新登录。");
- setTimeout(function () {
- window.top.location.href="<%=path%>/index.jsp";
- },2000);
- </script>
- </body>