在web.xml中配置多个filter是怎么执行的?

如题:
在web.xml中配置了两个或者多个的filter,他们的执行顺序是什么,是依次执行(也就是按顺序执行,配置在前的先执行,配置在后的后执行),还是怎么回事:
如下代码:
这是公司一个项目的架构,我在研究的时候发现的,始终搞不明白:
web.xml的部分配置文件:
<!--配置的filter-->

struts2Filter
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

<!-- UrlRewrite filter -->

urlRewriteFilter
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter

    <!--配置的filtermapping-->
    <filter-mapping>
    <filter-name>struts2Filter</filter-name>
    <url-pattern>*.action</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

<filter-mapping>
    <filter-name>urlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

就像这两个,到底谁先执行,谁后执行?

filter的执行类似于栈,执行顺序是按照在配置文件中配置的顺序执行的,比如定义两个filter(f1,f2),过滤的对象为index.jsp,则客户的请求(req)和响应(res)顺序是req->f1->f2>index.jsp->f2->f1->res。

字典顺序,filterdemo与afilterdemo从第一个字符开始比较,谁小谁先执行,所以这俩其中a开头的先执行