SessionFilter.java
package com.mall.shopping.demo.config;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter(filterName = "sessionFilter",urlPatterns = "/*")
public class SessionFilter implements Filter {
String NO_LOGIN = "您还没有登录";
String[] includeUrls = new String[]{"/admin","/Userlogin","/adminindex"};
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest=(HttpServletRequest)servletRequest;
HttpServletResponse httpServletResponse=(HttpServletResponse)servletResponse;
HttpSession httpSession = httpServletRequest.getSession();
String url=httpServletRequest.getRequestURI();
HttpServletRequest req =(HttpServletRequest)servletRequest;
boolean needFilter = isNeedFilter(url);
//放行静态资源
if(url.endsWith(".css")||url.endsWith(".js")||url.endsWith(".jpg")
||url.endsWith(".gif")||url.endsWith(".png")||url.endsWith(".xml")||url.startsWith("/share")||url.endsWith(".ttf")||url.endsWith(".woff")||url.endsWith(".eot")||url.endsWith(".otf")){
filterChain.doFilter(servletRequest,servletResponse);
return;
}
if(!needFilter){ //需要放行的请求
filterChain.doFilter(servletRequest,servletResponse);
return;
}else{ //进行拦截返回到登录页
String requestType = httpServletRequest.getHeader("X-Requested-With");
HttpSession session = req.getSession();
String username = (String) session.getAttribute("username");
String userpwd = (String) session.getAttribute("userpwd");
if(username == null && userpwd == null){
httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/admin");
}
else{
// //判断请求是否为ajax请求
// if(requestType!=null && "XMLHttpRequest".equals(requestType)){
// //是ajax请求返回提示信息
// httpServletResponse.getWriter().write(this.NO_LOGIN);
// }else{//不是ajax请求,重定向到登录页
// httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/admin");
// }
filterChain.doFilter(servletRequest,servletResponse);
return;
}
return;
}
}
@Override
public void destroy() {
}
public boolean isNeedFilter(String url){
for(String includeUrl:includeUrls){
if(includeUrl.equals(url)){
return false;
}
}
return true;
}
}