クラス PathPattern

java.lang.ObjectSE
org.springframework.web.util.pattern.PathPattern
実装されたすべてのインターフェース:
ComparableSE<PathPattern>

public class PathPattern extends ObjectSE implements ComparableSE<PathPattern>
解析されたパスパターンの表現。高速マッチングのためのパス要素のチェーンが含まれ、パターンの迅速な比較のために計算された状態を蓄積します。

PathPattern は、次のルールを使用して URL パスを照合します。

  • ? は 1 文字に一致します
  • * は、パスセグメント内の 0 個以上の文字に一致します
  • ** は、パスの終わりまでゼロ個以上のパスセグメントと一致します
  • {spring} はパスセグメントと一致し、"spring" という名前の変数としてキャプチャーします
  • {spring:[a-z]+} は正規表現 [a-z]+ をパスセグメントと照合し、それを "spring" という名前のパス変数としてキャプチャーします。
  • {*spring} は、パスの終わりまでゼロ個以上のパスセグメントと一致し、"spring" という名前の変数としてキャプチャーします

注意 : AntPathMatcher とは対照的に、** はパターンの最後でのみサポートされます。たとえば、/pages/{**} は有効ですが、/pages/{**}/details は無効です。同じことがキャプチャーバリアント {*spring} にも当てはまります。目的は、特異性についてパターンを比較する際のあいまいさを排除することです。

サンプル

  • /pages/t?st.html — /pages/test.html および /pages/tXst.html と一致しますが、/pages/toast.html とは一致しません
  • /resources/*.png — resources ディレクトリ内のすべての .png ファイルに一致します
  • /resources/** — /resources/image.png および /resources/css/spring.css を含む、/resources/ パスにあるすべてのファイルに一致します
  • /resources/{*path} — /resources/ および /resources にあるすべてのファイルに一致し、それらの相対パスを "path" という名前の変数にキャプチャーします。/resources/image.png は "path" → "/image.png" と一致し、/resources/css/spring.css は "path" → "/css/spring.css" と一致します。
  • /resources/{filename:\\w+}.dat は /resources/spring.dat と一致し、値 "spring" を filename 変数に割り当てます
導入:
5.0
作成者:
Andy Clement, Rossen Stoyanchev
関連事項:
  • フィールドの詳細

    • SPECIFICITY_COMPARATOR

      public static final ComparatorSE<PathPattern> SPECIFICITY_COMPARATOR
      パターンを次のように特異性でソートするコンパレーター:
      1. NULL インスタンスは最後です。
      2. キャッチオールパターンは最後です。
      3. 両方のパターンがキャッチオールである場合、長さを考慮します(長い方が勝ち)。
      4. ワイルドカードとキャプチャーされた変数の数を比較します(小さい方が勝ち)。
      5. 長さを考慮する (より長い勝ち)
  • メソッドの詳細

    • getPatternString

      public StringSE getPatternString()
      この PathPattern を作成するために解析された元の文字列を返します。
    • hasPatternSyntax

      public boolean hasPatternSyntax()
      パターン文字列に matches(PathContainer) の使用を必要とするパターン構文が含まれているか、他の文字列と直接比較できる通常の文字列であるか。
      導入:
      5.2
    • matches

      public boolean matches(PathContainer pathContainer)
      このパターンが指定されたパスに一致するかどうか。
      パラメーター:
      pathContainer - 照合を試みる候補パス
      戻り値:
      パスがこのパターンに一致する場合は true 
    • matchAndExtract

      @Nullable public PathPattern.PathMatchInfo matchAndExtract(PathContainer pathContainer)
      このパターンを指定された URI パスに一致させ、抽出された URI テンプレート変数とパスパラメーター(マトリックス変数)を返します。
      パラメーター:
      pathContainer - 照合を試みる候補パス
      戻り値:
      抽出された変数を持つ情報オブジェクト、または一致しない場合は null 
    • matchStartOfPath

      @Nullable public PathPattern.PathRemainingMatchInfo matchStartOfPath(PathContainer pathContainer)
      指定されたパスの先頭に一致し、このパターンでカバーされていない残りの部分を返します。これは、各レベルでパスが段階的に一致するネストされたルートを一致させるのに役立ちます。
      パラメーター:
      pathContainer - 照合を試みる候補パス
      戻り値:
      一致結果を持つ情報オブジェクト、または一致しない場合は null 
    • extractPathWithinPattern

      public PathContainer extractPathWithinPattern(PathContainer path)
      指定されたパスのパターンマッピングされた部分を決定します。

      例:

      • '/docs/cvs/commit.html' および '/docs/cvs/commit.html → ''
      • '/docs/*' および '/docs/cvs/commit'→ 'cvs/commit'
      • '/docs/cvs/*.html' および '/docs/cvs/commit.html → 'commit.html'
      • '/docs/**' および '/docs/cvs/commit → 'cvs/commit'

      注:

      • matches(org.springframework.http.server.PathContainer) が同じパスに対して true を返すと仮定しますが、これを強制しません。
      • 返された結果内の重複するセパレータの出現は削除されます
      • 返される結果から先頭と末尾のセパレータが削除されます
      パラメーター:
      path - このパターンに一致するパス
      戻り値:
      パターンと一致するパスのサブセット、またはパターン要素と一致するパスがない場合は ""
    • compareTo

      public int compareTo(@Nullable PathPattern otherPattern)
      このパターンを提供されたパターンと比較します。このパターンがより具体的である場合、-1、0、+ 1 を返します。これは、提供されたパターンと同じか、より具体的ではありません。目的は、より具体的なパターンを最初にソートすることです。
      次で指定:
      インターフェース ComparableSE<PathPattern>compareToSE 
    • combine

      public PathPattern combine(PathPattern pattern2string)
      このパターンを別のパターンと組み合わせます。
    • equals

      public boolean equals(@Nullable ObjectSE other)
      オーバーライド:
      クラス ObjectSEequalsSE 
    • hashCode

      public int hashCode()
      オーバーライド:
      クラス ObjectSEhashCode 
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString