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>
  • 相关阅读:
    9、搜索 :ion-searchbar
    8、列表:ion-list
    uwp 的work project 的 取消闹钟
    long ? 的使用和理解
    uwp 中的音频开发
    uwp 之语音朗读
    uwp 语音指令
    C# 泛型(Generic)
    C# 排序列表(SortedList)
    C# 反射(Reflection)
  • 原文地址:https://www.cnblogs.com/cxyj/p/3884964.html
Copyright © 2011-2022 走看看