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