java.lang.Object | |
↳ | org.springframework.util.AntPathMatcher |
PathMatcher implementation for Ant-style path patterns. Examples are provided below.
Part of this mapping code has been kindly borrowed from Apache Ant.
The mapping matches URLs using the following rules:
Some examples:
com/t?st.jsp
- matches com/test.jsp
but also
com/tast.jsp
or com/txst.jsp
com/*.jsp
- matches all
.jsp
files in the com
directorycom/**/test.jsp
- matches all
test.jsp
files underneath the com
pathorg/springframework/**/*.jsp
- matches all .jsp
files underneath the org/springframework
pathorg/**/servlet/bla.jsp
- matches org/springframework/servlet/bla.jsp
but also
org/springframework/testing/servlet/bla.jsp
and org/servlet/bla.jsp
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | DEFAULT_PATH_SEPARATOR | Default path separator: "/" |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Combines two patterns into a new pattern that is returned.
| |||||||||||
Given a pattern and a full path, determine the pattern-mapped part.
| |||||||||||
Given a pattern and a full path, extract the URI template variables.
| |||||||||||
Given a full path, returns a
Comparator suitable for sorting patterns in order of explicitness. | |||||||||||
Does the given
path represent a pattern that can be matched
by an implementation of this interface?
If the return value is | |||||||||||
Match the given
path against the given pattern ,
according to this PathMatcher's matching strategy. | |||||||||||
Match the given
path against the corresponding part of the given
pattern , according to this PathMatcher's matching strategy. | |||||||||||
Set the path separator to use for pattern parsing.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Actually match the given
path against the given pattern . |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
| |||||||||||
From interface
org.springframework.util.PathMatcher
|
Default path separator: "/"
Combines two patterns into a new pattern that is returned.
This implementation simply concatenates the two patterns, unless the first pattern
contains a file extension match (such as *.html
. In that case, the second pattern
should be included in the first, or an IllegalArgumentException
is thrown.
For example:
Pattern 1 | Pattern 2 | Result |
---|---|---|
/hotels | null | /hotels |
null | /hotels | /hotels |
/hotels | /bookings | /hotels/bookings |
/hotels | bookings | /hotels/bookings |
/hotels/* | /bookings | /hotels/bookings |
/hotels/** | /bookings | /hotels/**/bookings |
/hotels | {hotel} | /hotels/{hotel} |
/hotels/* | {hotel} | /hotels/{hotel} |
/hotels/** | {hotel} | /hotels/**/{hotel} |
/*.html | /hotels.html | /hotels.html |
/*.html | /hotels | /hotels.html |
/*.html | /*.txt | IllegalArgumentException |
pattern1 | the first pattern |
---|---|
pattern2 | the second pattern |
IllegalArgumentException | when the two patterns cannot be combined |
---|
Given a pattern and a full path, determine the pattern-mapped part.
For example:
/docs/cvs/commit.html
' and '/docs/cvs/commit.html
-> ''/docs/*
' and '/docs/cvs/commit
-> 'cvs/commit
'/docs/cvs/*.html
' and '/docs/cvs/commit.html
-> 'commit.html
'/docs/**
' and '/docs/cvs/commit
-> 'cvs/commit
'/docs/**\/*.html
' and '/docs/cvs/commit.html
-> 'cvs/commit.html
'/*.html
' and '/docs/cvs/commit.html
-> 'docs/cvs/commit.html
'*.html
' and '/docs/cvs/commit.html
-> '/docs/cvs/commit.html
'*
' and '/docs/cvs/commit.html
-> '/docs/cvs/commit.html
'Assumes that match(String, String)
returns true
for 'pattern
' and 'path
', but
does not enforce this.
pattern | the path pattern |
---|---|
path | the full path to introspect |
path
(never null
)
Given a pattern and a full path, extract the URI template variables. URI template variables are expressed through curly brackets ('{' and '}').
For example: For pattern "/hotels/{hotel}" and path "/hotels/1", this method will return a map containing "hotel"->"1".
pattern | the path pattern, possibly containing URI templates |
---|---|
path | the full path to extract template variables from |
Given a full path, returns a Comparator
suitable for sorting patterns in order of explicitness.
The returned Comparator
will sort
a list so that more specific patterns (without uri templates or wild cards) come before
generic patterns. So given a list with the following patterns:
/hotels/new
/hotels/{hotel}
/hotels/*
The full path given as parameter is used to test for exact matches. So when the given path is /hotels/2
,
the pattern /hotels/2
will be sorted before /hotels/1
.
path | the full path to use for comparison |
---|
Does the given path
represent a pattern that can be matched
by an implementation of this interface?
If the return value is false
, then the match(String, String)
method does not have to be used because direct equality comparisons
on the static path Strings will lead to the same result.
path | the path String to check |
---|
true
if the given path
represents a pattern
Match the given path
against the given pattern
,
according to this PathMatcher's matching strategy.
pattern | the pattern to match against |
---|---|
path | the path String to test |
true
if the supplied path
matched,
false
if it didn't
Match the given path
against the corresponding part of the given
pattern
, according to this PathMatcher's matching strategy.
Determines whether the pattern at least matches as far as the given base path goes, assuming that a full path may then match as well.
pattern | the pattern to match against |
---|---|
path | the path String to test |
true
if the supplied path
matched,
false
if it didn't
Set the path separator to use for pattern parsing. Default is "/", as in Ant.
Actually match the given path
against the given pattern
.
pattern | the pattern to match against |
---|---|
path | the path String to test |
fullMatch | whether a full pattern match is required (else a pattern match as far as the given base path goes is sufficient) |
true
if the supplied path
matched, false
if it didn't