首先,Servlet是Servlet,Filter是Filter,两者不能混为一谈,而且有先后之别,在web.xml中,一定是Filter在Servlet之前。
过滤器的作用,顾名思义,起到过滤作用,一般用于处理不同的xxxServlet公共处理的部分。比如,拦截某些客户端的ip,根据初始化参数的黑名单阻止继续访问,记录某个xxxservlet执行的时间等等。
《Tomcat与JavaWeb开发技术详解》
关于过滤器的使用步骤和生命周期,直接上图:
《Tomcat与JavaWeb开发技术详解》
你猜对了,过滤器也是Servlet帮你创建的,并且以它规定的顺序执行,什么时候执行什么方法。
所有的自己实现的过滤器都要实现javax.servlet.Filter接口。发布时要在web.xml中配置<filter>元素,且在所有的<servlet>之前。若要对所以的请求都过滤,<url-pattern>就写成"/*",Servlet容器都会先把请求交给过滤器处理。
——————
串联过滤器: 多个过滤器可以串联起来协同工作,Servlet容器将根据它们在web.xml中定义的先后顺序,依次调用它们的doFilter()方法。
《Tomcat与JavaWeb开发技术详解》