1、普通请求处理,添加过滤器
public class MySessionFilter implements Filter,
com.sun.org.apache.xalan.internal.xsltc.dom.Filter {
private static final Logger log=LoggerFactory.getLogger(MySessionFilter.class);
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
log.info("=========start MySessionFilter.dofiter()=============");
HttpServletRequest hrequest=(HttpServletRequest)request;
HttpServletResponse hResponse=(HttpServletResponse)response;
HttpSession session= hrequest.getSession(false);
log.info(hrequest.getServletPath());
if(hrequest.getServletPath().endsWith("/login.do") || hrequest.getServletPath().endsWith("/product.do")){
chain.doFilter(request, response);
}else{
if(session!=null){
chain.doFilter(request, response);
}else{
//session过期判断是不是ajax 请求,如果是ajax请求,就会在响应头里,sessionstatus有一个timeout
if(hrequest.getHeader("x-requested-with")!=null &&
hrequest.getHeader("x-requested-with").equals("XMLHttpRequest")){
hResponse.setHeader("sessionstatus", "timeout");
}else{
hResponse.sendRedirect(hrequest.getContextPath() + "/login.do");
return ;
}
}
}
}
2、在web.xml中配置 session过滤器,session过滤器放在其他过滤器前面
![Session过期处理_1 Session过期处理_1](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)