繁体   English   中英

web.xml中的映射案例

[英]Mapping cases in web.xml

web.xml ,是否可能有一个主映射和一个第二个映射,这些映射与第一个映射不同,如下所示?

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>ErrorHandler</servlet-name>
    <url-pattern>/?</url-pattern>
</servlet-mapping>

部署描述符中可以有多个servlet-mapping Java Servlet规范第12章描述了选择映射的规则。将请求映射到Servlet:

12.1 URL路径的使用
...
用于映射到servlet的路径是来自请求对象的请求URL减去上下文路径和路径参数。 以下URL路径映射规则按顺序使用。 使用第一个成功的匹配,不尝试其他匹配:

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

因此,这意味着,如果您具有完全匹配的内容,例如<url-pattern>/tar</url-pattern> ,则将选择此映射。 否则,将使用第二个不太具体的映射(例如<url-pattern>/*</url-pattern> )。

但是您不能使用<url-pattern>/tar*</url-pattern>创建映射,因为仅在/*末尾/*的开头允许使用星号*. 模式的格式(注意星号前的斜杠/以及句点.之后)。 有关完整详细信息,请参见第12.2节“映射规范”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM