zoukankan      html  css  js  c++  java
  • Ajax请求Session超时解决

    web前端js代码:

    $.ajaxSetup({
        contentType : "application/x-www-form-urlencoded;charset=utf-8",
        complete : function(xhr, textStatus) {
            if (xhr.status == 520) {//如果返回状态码是520
                window.location..reload();//刷新页面,执行登录逻辑
                return;
            }
        }
    });

    java代码:

      1. 写一个filter

    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class SessionTimeoutFilter implements Filter {
    
        public void destroy() {
    
        }
    
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            HttpServletRequest req = (HttpServletRequest) request;
            HttpServletResponse res = (HttpServletResponse) response;
            // 判断session里是否有用户信息
            if (req.getSession().getAttribute("username") == null){
                // 如果是ajax请求响应头会有,x-requested-with;
                if (req.getHeader("x-requested-with") != null && req.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){
                    res.setStatus(520);//表示session timeout
                }else{
                    chain.doFilter(req, res);
                }
            }else{
                chain.doFilter(req, res);
            }
        }
    
        public void init(FilterConfig chain) throws ServletException {
    
        }
    }

      2. 在web.xml中添加上面的filter

    <filter>
        <filter-name>ajaxSessionTimeout</filter-name>
        <filter-class>org.tshark.framework.web.filter.SessionTimeoutFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>ajaxSessionTimeout</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  • 相关阅读:
    【BZOJ5281】Talent Show(分数规划)
    数据库的连接(学习笔记)
    锁(学习笔记)
    事务处理(学习笔记)
    游标(学习笔记)
    PL/SQL基础-异常处理
    通用函数(学习笔记)
    转换函数(学习笔记)
    数据库的备份和恢复(学习笔记学习中)
    分析函数
  • 原文地址:https://www.cnblogs.com/cxyj/p/3884964.html
Copyright © 2011-2022 走看看