过滤器通过 Web 部署描述符(web.xml)中的 XML 标签来声明,然后映射到您的应用程序的部署描述符中的 Servlet 名称或 URL 模式。或者也可以直接使用 @WebFilter 注解。
Filter的过滤过程:web客户端发送一个请求,过滤器会将其拦截,处理后再交给下一个过滤器或者servlet处理,servlet的响应也会通过过滤器后再给客户端。
过滤器的Web 部署描述符:想要拦截哪个具体的servlet,JSP,html地址,只需在
<url-pattern>/########</url-pattern>中间添加即可。
若想拦截所有相关地址,使用<url-pattern>/*</url-pattern>即可。
过滤器的 @WebFilter 注解方法:
在括号中填写url地址。
Servlet 过滤器主要方法:
1.public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
该方法完成实际的过滤操作,当客户端的请求与过滤器设置的 URL 匹配时,Servlet 容器将先调用过滤器的 doFilter 方法。FilterChain 用于访问后续过滤器。
chain.doFilter():一般来说,一个项目中会有多个过滤器一个个连接在一起,而chain.doFilter将请求转发给过滤器链下一个filter , 如果没有filter那就是你请求的资源。
2.public void init(FilterConfig filterConfig)
web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。
FilterConfig的配置,使用:
xml文件的配置:
public void init(FilterConfig filterConfig)方法的使用:
3.public void destroy()
Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。