当我们引用路径时,两个星号而不是一个星号之间有什么区别?
早些时候我正在调试我的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/**
,最终有效。我的问题是......为什么?
答案 0 :(得分:38)
这是Apache ant
中使用的路径模式,Spring团队实现它并在整个框架中使用它。
作为参考,请参阅AntPathMatcher的javadoc(newest javadoc似乎有问题,所以我链接旧的。)
回到你的问题,根据该文件,它只有3条规则:
?
匹配一个字符*
匹配零个或多个字符**
匹配路径中的零个或多个“目录”