zoukankan      html  css  js  c++  java
  • jQuery easyui Session 超时返回登录页面

                                   

             说明:测试设置失效时间为1分钟,登录成功后1分钟去点击操作处罚事件,执行①连接到com.lactec.framework.ac.filter.AuthFilter这个类判断执行的action操作。

          判断session是否为空,超时就返回,我用的是ajax请求:如果是ajax请求响应头会有,x-requested-with;

          设置: rep.setHeader("sessionstatus", "timeout");//在响应头设置session状态
                   rep.getWriter().print("登录超时!"); //打印一个返回值,没这一行,在tabs页中无法跳出(导航栏能跳出),具体原因不明

          前台部分通过  XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,给出提示 。

    ① web.XML部分配置代码

     1 <!-- filter 权限认证 只对amf请求过滤 -->
     2 <filter>
     3   <filter-name>authFilter</filter-name>
     4   <filter-class>com.lactec.framework.ac.filter.AuthFilter</filter-class>
     5 </filter>
     6   <filter-mapping>
     7   <filter-name>authFilter</filter-name>
     8 <url-pattern>*.do</url-pattern>
     9 </filter-mapping>
    10 <!-- session失效时间是30分钟 -->
    11 <session-config> 
    12   <session-timeout>30</session-timeout> 
    13 </session-config>

    ②java代码

     public class AuthFilter extends BaseAction implements Filter {     
    
     public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException{
    
      HttpServletRequest req = (HttpServletRequest) request;
    
      HttpServletResponse rep = (HttpServletResponse) response;
      
      String uri = req.getRequestURI();//获取登录的action
      if(uri.indexOf("loginAction")>=0){
          chain.doFilter(request, response);//跳转页面
      }else{
        //获取登录用户的Session --基础权限检查,用户没有登陆,被拦截或者session超时请重新登录
        if(Utils.isNull(req.getSession()) || Utils.isNull(req.getSession().getAttribute("user")) ){
          //如果是ajax请求响应头会有,x-requested-with; 
          if (req.getHeader("x-requested-with") != null && req.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){
     
            rep.setHeader("sessionstatus", "timeout");//在响应头设置session状态 
            rep.getWriter().print("登录超时!"); //打印一个返回值,没这一行,在tabs页中无法跳出(导航栏能跳出),具体原因不明
          } 
          return; 
      }else {
          chain.doFilter(request, response);//跳转页面
    
          }
        }
    
      }
    }
    

      

     
     
    ③ JS代码部分
    $.ajaxSetup({ 
        error: function (XMLHttpRequest, textStatus, errorThrown){
          if(XMLHttpRequest.status==403){
            $.messager.alert('我的消息', '您没有权限访问此资源或进行此操作!', 'success');
            return false;
          }
        }, 
        complete:function(XMLHttpRequest,textStatus){ 
          var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus, 
          if(sessionstatus=='timeout'){ 
            //如果超时就处理 ,指定要跳转的页面 
            var top = getTopWinow(); //获取当前页面的顶层窗口对象
            $.messager.alert('我的消息', '登录超时-请重新登录!', 'info');
            top.location.href = "http://"+window.location.host+"/crm_web/login_new.html"; //跳转到登陆页面 对多服务器同样适用
          } 
        } 
    });
    
    /** 
    * 在页面中任何嵌套层次的窗口中获取顶层窗口 
    * @return 当前页面的顶层窗口对象 
    */
    function getTopWinow(){ 
            var p = window; 
            while(p != p.parent){ 
                p = p.parent; 
            } 
        return p; 
       }
  • 相关阅读:
    java编码规范
    Unix操作系统内核结构报告
    vim常用命令组合
    JavaWeb学习笔记13--Servlet开发(二)
    JavaWeb学习笔记12--Servlet开发(一)
    JavaWeb学习笔记11--JSTL标签库
    JavaWeb学习笔记10--Cookie实现记住密码的功能
    JavaWeb学习笔记9--JSP属性范围
    JavaWeb学习笔记8--JSP内置对象详解
    JavaWeb学习笔记7--JSP脚本元素、指令元素、动作元素
  • 原文地址:https://www.cnblogs.com/tb176/p/4478441.html
Copyright © 2011-2022 走看看