1.通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截
2.如何编写过滤器
1、编写java类实现Filter接口
2、重写doFilter方法
3、设置拦截的url
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/myservlet1")//过滤路径
public class MyFilter1 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("过滤器初始化了........init... "+filterConfig);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("过滤前........doFilter "); //放行
filterChain.doFilter(servletRequest, servletResponse);//加入过滤器链
System.out.println("过滤后.......doFilter");
}
@Override
public void destroy() {
System.out.println("销毁了.....destroy");
}
}
4.在spring中,filter都默认继承OncePerRequestFilter,但为什么要这样呢?
OncePerRequestFilter顾名思义,他能够确保在一次请求只通过一次filter,而不需要重复执行。