session會話過期,專案返回首頁
阿新 • • 發佈:2019-02-11
1.web.xml新增攔截器
2.自定義攔截器
/* * Copyright (c) 2017,TravelSky. * All Rights Reserved. * TravelSky CONFIDENTIAL */ package com.travelsky.eventanalysis.filter; import java.io.IOException; import java.io.PrintWriter; 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; import javax.servlet.http.HttpSession; public class SessionFilterimplements implements Filter { @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; HttpSession session = httpRequest.getSession(); // 登陸url String loginUrl = httpRequest.getContextPath() + "/common/login.jsp"; String url = httpRequest.getRequestURI(); String path = url.substring(url.lastIndexOf("/")); // 超時處理,ajax請求超時設定超時狀態,頁面請求超時則返回提示並重定向 if (!"/execute".equals(path) && !"/login.jsp".equals(path) && !"/EventAnalysis/".equals(url) && session.getAttribute("username") == null) { // 判斷是否為ajax請求 if (httpRequest.getHeader("x-requested-with") != null && httpRequest.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) { httpResponse.addHeader("sessionstatus", "timeOut"); httpResponse.addHeader("loginPath", loginUrl); chain.doFilter(request, response);// 不可少,否則請求會出錯 } else { String str = "<script language='javascript'>alert('會話過期,請重新登入');" + "window.top.location.href='" + loginUrl + "';</script>"; response.setContentType("text/html;charset=UTF-8");// 解決中文亂碼 try { PrintWriter writer = response.getWriter(); writer.write(str); writer.flush(); writer.close(); } catch (Exception e) { e.printStackTrace(); } } } else { chain.doFilter(request, response); } } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
參考:https://www.jb51.net/article/85800.htm