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;
/**
-
@author Abell
-
@descibe 过滤器
-
@date 2020/4/17 10:53
/
@WebFilter(urlPatterns = {"/commodity/index.html"}, filterName = “LoginFilter”)
public class LoginFilter implements Filter {
/*- 反序列化
*/
private static final long serialVersionUID = 1L;
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession(true);
String url = request.getRequestURI();
String name = (String) session.getAttribute(“name”);
if (name == null && url.indexOf("…/user/index.html") == -1) {
String location = “…/user/index.html”;
response.sendRedirect(location);
System.out.println("成功拦截到外星人企图入侵网站后台 : " + url);
response.setHeader(“Cache-Control”, “no-store”);
response.setDateHeader(“Expires”, 0);
response.setHeader(“Pragma”, “no-cache”);
} else {
chain.doFilter(request, response);
}
}public void init(FilterConfig arg0) throws ServletException {
}
} - 反序列化
这里@WebFilter里面的urlPatterns配置的是要拦截的地址,如果是*.html就是过滤所有的html页面。
然后这里创建好之后,需要在启动类上加上@ServletComponentScan注解,这样就能扫描到我们创建的filter类。
这样子按照我配置的这个就是当你访问/commodity/index.html时就会重定向到…/user/index.html页面。
: