类 PathPattern

  • 所有已实现的接口:
    Comparable<PathPattern>

    public class PathPattern
    extends Object
    implements Comparable<PathPattern>
    Representation of a parsed path pattern. 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
    • ** matches zero or more path segments until the end of the path
    • {spring} matches a path segment and captures it as a variable named "spring"
    • {spring:[a-z]+} matches the regexp [a-z]+ as a path variable named "spring"
    • {*spring} matches zero or more path segments until the end of the path and captures it as a variable named "spring"
    Notable behavior difference with AntPathMatcher:
    ** and its capturing variant {*spring} cannot be used in the middle of a pattern string, only at the end: /pages/{**} is valid, but /pages/{**}/details is not.

    Examples

    • /pages/t?st.html — matches /pages/test.html as well as /pages/tXst.html but not /pages/toast.html
    • /resources/*.png — matches all .png files in the resources directory
    • /resources/** — matches all files underneath the /resources/ path, including /resources/image.png and /resources/css/spring.css
    • /resources/{*path} — matches all files underneath the /resources/ path and captures their relative path in a variable named "path"; /resources/image.png will match with "path" → "/image.png", and /resources/css/spring.css will match with "path" → "/css/spring.css"
    • /resources/{filename:\\w+}.dat will match /resources/spring.dat and assign the value "spring" to the filename variable
    从以下版本开始:
    5.0
    作者:
    Andy Clement, Rossen Stoyanchev
    另请参阅:
    PathContainer
    • 字段详细资料

      • SPECIFICITY_COMPARATOR

        public static final Comparator<PathPattern> SPECIFICITY_COMPARATOR
        Comparator that sorts patterns by specificity as follows:
        1. Null instances are last.
        2. Catch-all patterns are last.
        3. If both patterns are catch-all, consider the length (longer wins).
        4. Compare wildcard and captured variable count (lower wins).
        5. Consider length (longer wins)
    • 方法详细资料

      • getPatternString

        public String getPatternString()
        Return the original String that was parsed to create this PathPattern.
      • hasPatternSyntax

        public boolean hasPatternSyntax()
        Whether the pattern string contains pattern syntax that would require use of matches(PathContainer), or if it is a regular String that could be compared directly to others.
        从以下版本开始:
        5.2
      • matches

        public boolean matches​(PathContainer pathContainer)
        Whether this pattern matches the given path.
        参数:
        pathContainer - the candidate path to attempt to match against
        返回:
        true if the path matches this pattern
      • matchAndExtract

        @Nullable
        public PathPattern.PathMatchInfo matchAndExtract​(PathContainer pathContainer)
        Match this pattern to the given URI path and return extracted URI template variables as well as path parameters (matrix variables).
        参数:
        pathContainer - the candidate path to attempt to match against
        返回:
        info object with the extracted variables, or null for no match
      • matchStartOfPath

        @Nullable
        public PathPattern.PathRemainingMatchInfo matchStartOfPath​(PathContainer pathContainer)
        Match the beginning of the given path and return the remaining portion not covered by this pattern. This is useful for matching nested routes where the path is matched incrementally at each level.
        参数:
        pathContainer - the candidate path to attempt to match against
        返回:
        info object with the match result or null for no match
      • extractPathWithinPattern

        public PathContainer extractPathWithinPattern​(PathContainer path)
        Determine the pattern-mapped part for the given path.

        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'

        Notes:

        • Assumes that matches(org.springframework.http.server.PathContainer) returns true for the same path but does not enforce this.
        • Duplicate occurrences of separators within the returned result are removed
        • Leading and trailing separators are removed from the returned result
        参数:
        path - a path that matches this pattern
        返回:
        the subset of the path that is matched by pattern or "" if none of it is matched by pattern elements
      • compareTo

        public int compareTo​(@Nullable
                             PathPattern otherPattern)
        Compare this pattern with a supplied pattern: return -1,0,+1 if this pattern is more specific, the same or less specific than the supplied pattern. The aim is to sort more specific patterns first.
        指定者:
        compareTo 在接口中 Comparable<PathPattern>