当我们引用路径时,两个星号而不是一个星号有什么区别?
之前我在调试我的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条答案
按热度按时间py49o6xq1#
这是Apache Ant库中使用的 * 路径模式 *。Spring团队实现了它并在整个框架中使用它。
回到你的问题。根据
AntPathMatcher
的Javadoc,它只有3条规则:?
匹配一个字符*
匹配零个或多个字符**
匹配路径中的零个或多个“目录”更新2022
在最新的Spring Framework版本中,有第四条规则:
{spring:[a-z]+}
匹配regexp[a-z]+
作为名为“spring”的路径变量详情请参见最新的(截至目前)Spring Framework版本5Javadoc:
AntPathMathcer
。