1

根据映射行为,我有一个问题。

如果给出了这些映射:

<servlet-mapping>
   <servlet-name> ServletA </servlet-name>
   <url-pattern> *.xml </url-pattern>
</servlet-mapping>
<servlet-mapping>
   <servlet-name> ServletB </servlet-name>
   <url-pattern> /result/* </url-pattern>
</servlet-mapping>

还有这个 HTTP 请求:

/result/example.xml

哪个 servlet 将被映射,为什么?

4

1 回答 1

0

给定您的<servlet-mapping>配置,请求/result/example.xml将被处理,ServletB因为路径匹配总是胜过扩展匹配。

之所以如此,是因为与针对特定目录及其后代的路径匹配相比,扩展匹配被认为是更宽松的(不是失败者,尽管它也适用:) 约束,因为它在站点范围内有效,因此在自然。

匹配的优先级是这样的:

  1. 精确路径匹配
  2. 通配符路径匹配(较长的匹配将胜过较短的匹配)
  3. 扩展匹配
  4. 默认 servlet(配置为仅/处理所有 404)
于 2015-07-06T16:06:54.953 回答