Springmvc拦截器简单使用以及session超时跳转

来源:互联网 发布:怎么用淘宝微淘 编辑:程序博客网 时间:2024/06/06 03:10

1.在web.xml中加入session超时失效设置:

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

2.在Spring-mvc(Spring配置文件中)加入

              <!--配置拦截器 -->
   <mvc:interceptors>
        <mvc:interceptor>
            <!-- 拦截所有URL -->
            <mvc:mapping path="/**"/>
            <bean class="com.bigdata.fxzcbx.common.loginIntercepter"></bean>
        </mvc:interceptor>
     </mvc:interceptors>
    <mvc:default-servlet-handler/>

3.然后loginIntercepter 中implements(实现) HandlerInterceptor

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
        SysUser sysUser = (SysUser) request.getSession().getAttribute("SESSION_SYS_USER");
        String requestUri = request.getRequestURI();
        if(request.getUserPrincipal()!=null){
            return true;
        }
        String totalUrl=String.valueOf(request.getRequestURL());
        if (sysUser == null) {
            //设置session超时状态发送ajax请求时需要判断该参数也就是超时跳转需要用到
            response.addHeader("sessionstatus", "timeOut");

            System.out.println("========totalUrl:"+totalUrl+"============");
            if("/ACM/user/login".equals(requestUri)){return true;}
            response.sendRedirect("/ACM/user/login");
            return false;
        }
        return true;
    }

4.前台jsp页面加入

<%@taglib  prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<c:set var="serverUrl" value="${pageContext.request.requestURL}"/>

 <!--发送ajax请求的时候判断session是否有效-->
    <script type="text/javascript">
        $(document).ajaxComplete(function(event, xhr, settings) {
            var url="${serverUrl}";
            if(xhr.getResponseHeader("sessionstatus")=="timeOut"){
                 if(url.indexOf("127.0.0.1")>=0||url.indexOf("localhost")>=0){
                     window.location.href="${ctx}/user/login";
                 }
                  else{
                     window.location.href="${ctx}/user/login_cas";
                 }
            }
        });
    </script>

是标红部分相对应的

ok这样就大功告成了!