在Tomcat的<url-pattern>中,前导斜杠/是什么意思?</url-pattern>

时间:2014-10-30 18:20:41

标签: regex tomcat url-pattern

我知道我不能将正则表达式用于过滤器映射的<url-pattern>,但是可以使用directory pattern来指定包含单词myuniqws的任何网址,如下所示:

https://my.hostname.org/myuniqws/myport/soap?wsdl

我在考虑这可能是正确的语法:

<url-pattern>/*myuniqws*</url-pattern>

但我无法找到有关Tomcat <url-pattern>语法的确切规则的文档。

上面的正则表达式会不会像我想的那样工作?


更新

感谢下面的回答,我在Java Servlet规范中发现了以下部分,它基本上回答了我的问题。

12.2映射规范

在Web应用程序部署描述符中,使用以下语法进行定义 映射:

  • 以“/”字符开头并以“/ *”后缀结尾的字符串用于 路径映射。
  • 以'*。'前缀开头的字符串用作扩展名映射。
  • 空字符串(&#34;&#34;)是一种特殊的URL模式,它完全映射到应用程序的上下文根,即http://host:port/<contextroot>/形式的请求。在这种情况下,路径信息是'/',servlet路径和上下文路径是空字符串(“”)。
  • 仅包含'/'字符的字符串表示&#34;默认&#34;应用程序的servlet。在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为空。
  • 所有其他字符串仅用于完全匹配。

如果有效web.xml(在从片段和注释合并信息之后)包含映射到多个servlet的任何url模式,则部署必须失败。

1 个答案:

答案 0 :(得分:1)

据推测,您的意思是<url-pattern>中过滤器映射的web.xml。您可能不知道这一点,但web.xml被定义为Java Servlet规范的一部分。您可以在此处找到3.1版本(目前,最新和最好)的完整文档:

https://jcp.org/aboutJava/communityprocess/final/jsr340/index.html

如果您阅读第12.2节(&#34;映射规范&#34;),您可以确切地看到识别出哪种模式,包括您在上面请求的前缀映射。

编辑2014-11-04 : 您应该知道CATALINA_HOME/conf/web.xml(或CATALINA_BASE/conf/web.xml,如果您有)是Tomcat上部署的所有Web应用程序的默认配置,并且您的webapp WEB-INF/web.xml是特定于您自己的Web应用程序。这两个文件都应该包含以下xmlns语句,因此(通过它们的URI)指示它们是Java Servlet规范(或至少Java EE,包括servlet规范)所涵盖的:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">