Xyz*_*Xyz 14 java servlets java-ee servlet-filters
假设我在我的web.xml中有以下内容
<filter-mapping>
<filter-name>F1</filter-name>
<url-pattern>/XYZ/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>F2</filter-name>
<url-pattern>/XYZ/abc.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>F3</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
如果请求以/XYZ/abc.do.And为什么,将调用过滤器的顺序是什么?
Bar*_*end 20
Servlet规范3.0的 6.2.4节:
<filter-mapping>使用<url-pattern>样式处理元素时,容器必须<url-pattern>使用第12章"将请求映射到Servlet"中定义的路径映射规则来确定是否匹配请求URI.容器用于构建要应用于特定请求URI的过滤器链的顺序如下:
首先,
<url-pattern>匹配过滤器的映射顺序与这些元素在部署描述符中出现的顺序相同.接下来,
<servlet-name>匹配过滤器的映射顺序与这些元素在部署描述符中出现的顺序相同.如果一个过滤器映射同时包含
<servlet-name>和<url-pattern>,容器必须扩大过滤器映射到多个过滤器映射(每个<servlet-name>和<url-pattern>),保留的顺序<servlet-name>和<url-pattern>内容.
简而言之:它们按照它们出现在XML文件中的顺序应用.如果你点击两个<url-pattern>和<servlet-name>绑定过滤器所覆盖的URL会很有趣,因为所有的URL模式绑定过滤器都会在所有servlet-name绑定过滤器之前应用.我从来没有遇到这种情况(根本没有看到任何servlet-name绑定过滤器),但我认为它可能会让人很困惑.
| 归档时间: |
|
| 查看次数: |
23797 次 |
| 最近记录: |