具有多个匹配的Servlet映射

时间:2015-07-04 14:14:06

标签: servlets mapping pattern-matching multiple-matches

我根据映射行为提出了一个问题。

如果有这些映射:

<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-Request:

/result/example.xml

将映射哪个servlet以及为什么?

1 个答案:

答案 0 :(得分:0)

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

这是因为扩展匹配被认为是一个更宽松的(不是输家,虽然它也有效:)限制因为它与站点匹配相比,它与目标特定目录及其后代的路径匹配相比,因此更具体的性质。

匹配优先级如下:

  1. 确切路径匹配
  2. 通配符路径匹配(较长的匹配将胜过较短的匹配)
  3. 分机匹配
  4. 默认servlet(仅配置/来处理所有404)