What's the difference between two asterisks instead of one asterisk when we refer to paths?
Earlier I was debugging my Spring 3 project. I was trying to add a .swf using
<spring:url var="flashy" value="/resources/images/flash.swf"/>
With my web.xml's ResourceServlet looking like
<servlet-name>Resource Servlet </servlet-name> <url-pattern>/resources/*</url-pattern>
But unfortunately I was getting this error:
WARN org.springframework.js.resources.ResourceServlet - An attempt to access a protected resource at /images/flash.swf was disallowed.
I found it really strange since all my images in the images
folder were accessed but how come my .swf was "protected"?
Afterwards, I decided to change the /resources/*
to /resources/**
and it finally worked. My question is... why?
Includes a chain of path elements for fast matching and accumulates computed state for quick comparison of patterns. PathPattern matches URL paths using the following rules: ? matches one character. * matches zero or more characters within a path segment.
public class AntPathMatcher extends java.lang.Object implements PathMatcher. PathMatcher implementation for Ant-style path patterns. Part of this mapping code has been kindly borrowed from Apache Ant.
A Spring MVC is a Java framework which is used to build web applications. It follows the Model-View-Controller design pattern. It implements all the basic features of a core spring framework like Inversion of Control, Dependency Injection.
This is a path pattern that used in Apache ant
, spring team implement it and use it throughout the framework.
For reference, see javadoc of AntPathMatcher (newest javadoc seems to have problem, so I link an old one).
Back to your problem, according to the document, it only have 3 rules:
?
matches one character*
matches zero or more characters**
matches zero or more 'directories' in a pathIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With