IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    lfsf802发表于 2015-07-31 23:38:42
    love 0

    问题描述

    在开发过程中,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过期跳转相应页面。
    


沪ICP备19023445号-2号
友情链接