Spring:关于路径的/ **和/ *的差异

时间:2012-09-24 16:40:24

标签: spring web resources url-pattern

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

早些时候我正在调试我的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/**,最终有效。我的问题是......为什么?

1 个答案:

答案 0 :(得分:38)

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

作为参考,请参阅AntPathMatcher的javadoc(newest javadoc似乎有问题,所以我链接旧的。)

回到你的问题,根据该文件,它只有3条规则:

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