EasyUI+SpringMVC配置session过期跳转页面

问题描述

在开发过程中,session过期是常见的,当session过期我们就能看到登录信息为null,这种问题最常见的处理方法就是判断session是否过期,如果过期跳转到登陆页面。这篇博客分享一下在easyUI和springmvc情况下如何配置。

SpringMVC拦截器配置

在SpringMVC中提供自定义拦截器的扩展,这时候就可以通过自定义完成对判断:
public class HandlerInterceptor1 extends HandlerInterceptorAdapter {//此处一般继承HandlerInterceptorAdapter适配器即可 
    @Override  
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
        if (request.getHeader("x-requested-with") != null&& request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) response.setHeader("sessionstatus", "timeout");//在响应头设置session状态 
 response.getWriter().print("timeout"); //打印一个返回值,
        return true;  
    }  
    @Override  
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {  
        System.out.println("===========HandlerInterceptor1 postHandle");  
    }  
    @Override  
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {  
        System.out.println("===========HandlerInterceptor1 afterCompletion");  
    }  
}  

完成拦截器配置

在springmvc中配置拦截器是用<mvc:interceptors>和
<mvc:interceptor>标签完成的,具体配置过程为
<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/*/*" />
            <bean class="com.lenovo.lstp.mam.interceptor.HandlerInterceptor1" >
                <property name="allowUrls">  
                    <list>  
                      <value>/login/login.do</value>  
                      <value>/common/language.do</value>  
                    </list>  
                </property>  
            </bean>
        </mvc:interceptor>
    </mvc:interceptors>

easyui设置全局JS完成跳转

在easyui前端添加一个全局的js完成判断和跳转功能,具体实现为:
$.ajaxSetup({ 
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==403){
alert('您没有权限访问此资源或进行此操作');
return false;
}
},  
         complete:function(XMLHttpRequest,textStatus){   
        var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus, 
                if(sessionstatus=='timeout'){   
                      //如果超时就处理 ,指定要跳转的页面 
             var top = getTopWinow(); //获取当前页面的顶层窗口对象
             alert('登录超时, 请重新登录.'); 
                 top.location.href=path+"/login.jsp"; //跳转到登陆页面
             }   
         }   
   }); 

结论

通过上面三个方面的配置即可完成session过期跳转相应页面。

你可能感兴趣的:(EasyUI+SpringMVC配置session过期跳转页面)