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

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这样就大功告成了!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值