春季:/ **和/ *关于路径的差异


80

引用路径时,两个星号而不是一个星号有什么区别?

之前我在调试Spring 3项目。我正在尝试使用添加.swf

<spring:url var="flashy" value="/resources/images/flash.swf"/>

我的web.xml的ResourceServlet看起来像

<servlet-name>Resource Servlet </servlet-name>
<url-pattern>/resources/*</url-pattern>

但是不幸的是我遇到了这个错误:

WARN org.springframework.js.resources.ResourceServlet - An attempt to access a protected resource at /images/flash.swf was disallowed.

我发现这很奇怪,因为images访问了该文件夹中的所有图像,但是为什么.swf受到了“保护”?

之后,我决定将更/resources/*改为/resources/**,终于可以了。我的问题是...为什么?


您确定该方法/resources/**适用<url-pattern>吗?
axtavt 2012年

附带说明,不推荐使用org.springframework.js.resource.ResourceServlet。来自Spring Web Flow参考指南:“请注意,从3.0.4版本开始,Spring Framework包括ResourceServlet的替代品(请参阅Spring Framework文档)。”
informatik01

Answers:


46

这是Apache antSpring团队中使用的路径模式,并在整个框架中使用它。

作为参考,请参阅AntPathMatcher的javadoc (最新的javadoc似乎有问题,因此我链接了一个旧的javadoc)。

回到您的问题,根据文档,它只有3条规则:

  1. ? 匹配一个字符
  2. * 匹配零个或多个字符
  3. ** 匹配路径中的零个或多个“目录”

1
是否可以*匹配**不能匹配的内容?
Alexander Suraphel 2014年

3
请注意,Springs的AntPathMatcher包含一些错误:它并不完全符合Ant Pattern Style。示例:**/*.css不适用于以开头的路径,/但应遵循Ant样式约定。
Devabc 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.