< xml version="1.0" encoding="UTF-8" >
Filter中主要有三个方法init(),doFilter(),destroy()
1.init(FilterConfigfilterConfig)
Web容器调用该方法该方法来初始化过滤器。容器在调用该方法时,向过滤器传递
FilterConfig对象,利用FilterConfig对象可以得到ServletContext对象,以及部署描述符中配置的过滤器的初始化参数。
从图中可以看出来Listener,Filter,Servlet及Tomcat的一个启动顺序。
2.doFilter(ServletRequestrequest, ServletResponse response,FilterChain chain)
这是Filter的主要方法,其中的request和response和servlet里的参数一样,至于chain是用于后面对请求的转发的,该参数的chain.doFilter方法是一种回调过程。
该方法以chain.doFilter()为界限,先执行前面的代码,然后执行chain.doFilter()方法来将请求传递给下一个Filter(如果没有Filter了就传递给Servlet),等到这条链执行完后,再往回执行后面的代码,它是使用回调来实现的。
大家可以通过下面的图来进行理解:

3.destroy()
这个方法servlet的destroy()方法一样,都是当服务器断开的时候才执行该销毁方法,Filter也是实例化一次,多次调用。
摘自 赵丹丹的专栏