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>
  • 相关阅读:
    《C语言程序设计》指针篇<一>
    《算法竞赛入门经典》刘汝佳 C语言部分(前四章)“注解与习题” 之思索 -<1>
    程序设计第二次作业<2>
    程序设计第二次作业<1>
    第一次面向对象程序设计作业-大一下学期的自我目标
    android部署tensorflow
    vim操作
    跑groud truth的disparity
    tensorflow与android编译
    Ubuntu ndk环境变量配置
  • 原文地址:https://www.cnblogs.com/cxyj/p/3884964.html
Copyright © 2011-2022 走看看