过滤器链:一个web应用中,可以配置多个过滤器,这多个过滤器就形成了一个过滤器链。
举个例子,如果有两个过滤器,那么在执行时,会先执行第一个过滤器放行前的逻辑,放行,然后再去执行第二个过滤器放行前的逻辑,第二个放行之后才能访问到资源,当资源访问完毕后,会先执行第二个过滤器放行后的逻辑,然后再去执行第一个过滤器放行后的逻辑。
过滤器的执行顺序:注解配置的Filter,优先级时按照过滤器类名(字符串)的自然排序
当使用web.xml配置两个过滤器时,它们的执行顺序是按照它们在web.xml中定义的顺序来执行的。也就是说,如果一个请求需要经过第一个过滤器和第二个过滤器,那么Servlet容器将首先调用第一个过滤器,然后再调用第二个过滤器。
如果两个过滤器都需要对同一个请求进行处理,并且它们的执行顺序很重要,则可以使用元素中的dispatcher属性来指定过滤器的执行顺序。
<filter-mapping>
<filter-name>myFilter1</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>myFilter2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>