如果我在web.xml中有两个与请求匹配的servlet映射会发生什么?

如果我在web.xml中有两个与请求匹配的servlet映射会发生什么? 它选择最具体的吗?

例如,如果我有以下xml,并且在转到somethingservlet或everything_else servlet时请求来…. /某事

 something /something   everything_else /*  

将使用第一次成功的比赛。

servlet容器后面有一些映射规则。 阅读Servlet 2.5规范章节SRV.11:

用于映射到servlet的路径是来自请求对象的请求URL减去上下文路径和路径参数。 下面的URL路径映射规则按顺序使用。 第一次成功匹配使用,未尝试进一步匹配:

  1. 容器将尝试查找请求路径与servlet路径的完全匹配。 成功匹配选择servlet。
  2. 容器将递归地尝试匹配最长的路径前缀。 这是通过使用’/’字符作为路径分隔符一次单击目录的路径树来完成的。 最长匹配确定所选的servlet。
  3. 如果URL路径中的最后一个段包含扩展名(例如.jsp),则servlet容器将尝试匹配处理扩展请求的servlet。 扩展名被定义为最后一个’。’之后的最后一个段的一部分。 字符。
  4. 如果前三个规则都不会导致servlet匹配,则容器将尝试提供适合所请求资源的内容。 如果为应用程序定义了“默认”servlet,则将使用它。