servlet映射url-pattern上的双通配符(*)是什么意思?

我想知道使用 或 来描述servlet映射上的url模式有什么区别。

例如:下面有什么区别?

1)

<servlet-mapping id="...">

<servlet-name>BuyServlet</servlet-name>

<url-pattern>/buy/*</url-pattern>

</servlet-mapping>

2)

<servlet-mapping id="...">

<servlet-name>ShopServlet</servlet-name>

<url-pattern>/shop/**</url-pattern>

</servlet-mapping>

编辑:@Andrew是正确的,该规范只讨论一个通配符(*)。

我仔细检查了我的代码,发现发现双通配符(**)的位置在Spring SimpleUrlHandlerMapping bean中。

在这种情况下,这是有道理的。按照类doc,它使用AntPathMatcher,它指出:

映射使用以下规则匹配URL:匹配一个字符匹配零个或多个字符*匹配路径中的零个或多个“目录”

回答:

Servlet规范(版本2.5)的11.2节规定以下内容:

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

  • 路径映射使用以’/’字符开头并以’/ *’后缀结尾的字符串。
  • 以“ *”开头的字符串。前缀用作扩展名映射。
  • 仅包含“ /”字符的字符串表示应用程序的“默认”

    servlet。在这种情况下,Servlet路径是请求URI减去上下文路径,并且路径信息为null。

  • 所有其他字符串仅用于完全匹配。

因此,我猜想第二个变体(**)没有意义。

PS我刚刚尝试设置这种映射,似乎只有这个确切的URL /shop/**会被匹配(Tomcat 6.0.32)。

以上是 servlet映射url-pattern上的双通配符(*)是什么意思? 的全部内容, 来源链接: utcz.com/qa/421028.html

回到顶部