Spring中/**和/*之间的区别

7
可能这是一个非常愚蠢的问题,但我在互联网上找不到任何相关信息。
在Spring中,<mvc:mapping path="/**"/><mvc:mapping path="/*"/>之间的区别是什么?

你是指Spring Security吗?类似于 <security:intercept-url pattern="/user/**" access="ROLE_USER" /> 这样的东西? - JohnnyAW
2
我只是猜测,但这可能意味着子路径也会被搜索。例如,/* 只会找到位于根目录中的资源,而/** 可能会找到位于根目录的子目录中的资源。 - Henrik Aasted Sørensen
1
@MatteoDepasquali,我找到了另一个参考:<resources mapping="/resources/**" location="/res/" />。在这种情况下,我认为它就像@Henrik所说的那样,“**”表示包括子目录。据我所知,Spring使用ant-pattern,你可以在网上搜索ant-file-patterns或类似的内容。 - JohnnyAW
感谢大家。当在模式属性中使用 /** 时,意思是一样的吗? 例如 /user/** 表示有效的 URL 是 /user/subFolder 和 /user/subFolder/subFolder/? - MDP
是的,它就是那个意思。 - Stephen C
显示剩余2条评论
2个回答

8
这里有文档: 基本上,Spring支持“Ant样式的通配符”。 因此,path="/*"匹配"/"目录中的任何URL1,而path="/**"匹配整个目录树中的任何URL。
该文档主要讨论使用注释指定的请求映射,但使用XML指定的连线具有相同的含义。

1 - 我在这里宽泛地使用“目录”一词。 严格来说,这根本不是目录。 但你知道我的意思...


1
/*/** 的区别在于后者匹配整个目录树,包括子目录,而前者只匹配指定级别。 /** URL 模式被称为 ant 路径样式语法

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接