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>
  • 相关阅读:
    Ximarin.Android 百度地图
    利用Chrome浏览器 保存网页成PDF
    SQL 笔记
    windows server 2008 r2 IIS PHP
    自动化分页,HTML代码控制 思想
    simple
    testtitle
    PyQt5中中文问题的不完全解决
    ubuntu下搭建python2.7+PyQt5并实现一个小词典
    opensuse安装深度截图,深度影音和深度播放器
  • 原文地址:https://www.cnblogs.com/cxyj/p/3884964.html
Copyright © 2011-2022 走看看