web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能
过滤器的作用:一般用于完成通用的操作,如登录验证、统一编码处理、敏感字符过滤等等。
public interface Filter {
default void init(FilterConfig filterConfig) throws ServletException {
}
void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
default void destroy() {
}
}
注意:通过查看源码我们发现,只有doFilter方法没有实现,我们可以只重写doFilter方法,其他两个方法可以不重写
过滤器的生命周期方法:(1)init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次,用于加载资源
(2)doFilter:每一次请求被拦截资源时,会执行。执行多次
(3)destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法,只执行一次。用于释放资源
@WebFilter("/*")//注解配置
public class FilterDemo implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("对request进行过滤");
filterChain.doFilter(servletRequest,servletResponse); //放行
System.out.println("对response进行过滤");
}
}
4.Filter配置拦截路径
(1)web.xml配置
写filter的名字 写filter的全类名路径 写filter的名字 写拦截路径
(2)注解配置:查看源码得以下配置项
filterName:该filter的名字
initParams:初始化参数
displayName:filter显示名称
servletNames:指定对哪些servlet进行过滤
asyncSupported:是否支持异步模式
urlPatterns:指定拦截路径
value:指定拦截路径
注意:urlPatterns和value是一样的。urlPatterns和value只能配置一个,不能两个都配置,两个都配置就会报错。
实例:
@WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*")



