springmvc控制登入使用者session失效後跳轉登入頁面
阿新 • • 發佈:2019-02-07
第一步,配置 web.xml
[html] view plain copy print?- <spanstyle="font-size:18px;"><session-config>
- <session-timeout>15</session-timeout>
- </session-config>
- </span>
第二步,配置spring-mvc.xml [html] view plain copy print?
-
<spanstyle="font-size:18px;"
- <mvc:interceptors>
- <!-- 定義攔截器 -->
- <mvc:interceptor>
- <!-- 匹配的是url路徑, 如果不配置或/**,將攔截所有的Controller -->
- <mvc:mappingpath="/**"/>
- <!-- 不需要攔截的地址 -->
-
<mvc:exclude-mapping
- <beanclass="com.cm.contract.controller.annotation.GEISSSessionTimeoutInterceptor"></bean>
- </mvc:interceptor>
- </mvc:interceptors>
- </span>
第三步,寫攔截器SystemSessionInterceptor 方法
[java] view plain copy print?
-
publicclass
- privatestaticfinal String LOGIN_URL="/jsp/sessionrun.jsp";
- @Override
- publicvoid postHandle(HttpServletRequest request,
- HttpServletResponse response, Object handler,
- ModelAndView modelAndView) throws Exception {
- }
- @Override
- publicvoid afterCompletion(HttpServletRequest request,
- HttpServletResponse response, Object handler, Exception ex)
- throws Exception {
- }
- @Override
- publicboolean 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;
- returnfalse;
- }
- returntrue;
- }
- <span style="white-space:pre"> </span><body>
- <SCRIPT language="JavaScript">
- alert("使用者已在其他地方登陸,請重新登入。");
- setTimeout(function () {
- window.top.location.href="<%=path%>/index.jsp";
- },2000);
- </script>
- </body>