クラス 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
関連事項:
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static class
    指定された一致パスのパターンに基づいて抽出された URI 変数およびパスパラメーター(マトリックス変数)のホルダー。
    static class
    パターンの開始での一致の結果のホルダー。
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    パターンを次のように特異性でソートするコンパレータ: null インスタンスは最後です。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    combine(PathPattern otherPattern)
    このパターンをパラメーターとして指定されたパターンと組み合わせて、両方を連結またはマージする新しい PathPattern インスタンスを返します。
    int
    compareTo(PathPattern otherPattern)
    このパターンを提供されたパターンと比較します。このパターンがより具体的である場合、-1、0、+ 1 を返します。これは、提供されたパターンと同じか、より具体的ではありません。
    boolean
    指定されたパスのパターンマッピングされた部分を決定します。
    この PathPattern を作成するために解析された元の文字列を返します。
    int
    boolean
    パターン文字列に matches(PathContainer) の使用を必要とするパターン構文が含まれているか、他の文字列と直接比較できる通常の文字列であるか。
    このパターンを指定された URI パスに一致させ、抽出された URI テンプレート変数とパスパラメーター(マトリックス変数)を返します。
    boolean
    matches(PathContainer pathContainer)
    このパターンが指定されたパスに一致するかどうか。
    指定されたパスの先頭に一致し、このパターンでカバーされていない残りの部分を返します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, waitSE, waitSE
  • フィールドの詳細

    • 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 otherPattern)
      このパターンをパラメーターとして与えられたパターンと組み合わせ、両者を連結またはマージした新しい PathPattern インスタンスを返します。この演算は可換ではありません。つまり、pattern1.combine(pattern2) は pattern2.combine(pattern1) と等しくありません。

      2 つの "fixed" パターンを組み合わせると、効果的に連結されます。

      • "/projects" + "/spring-framework" => "/projects/spring-framework"
      "fixed" パターンと「一致する」パターンを組み合わせると、次のように連結されます。
      • "/projects" + "/{project}" => "/projects/{project}"
      「一致する」パターンを "fixed" パターンと組み合わせると、次のようになります。
      • "/projects/*" + "/spring-framework" => "/projects/spring-framework"
      • "/projects/*.html" + "/spring-framework.html" => "/projects/spring-framework.html"
      2 つの「一致する」パターンを組み合わせると、次のようになります。
      • "/projects/**" + "/*.html" => "/projects/*.html"
      • "/projects/*" + "/{project}" => "/projects/{project}"
      • "/projects/*.html" + "/spring-framework.*" => "/projects/spring-framework.html"
      注意: パターンが「一致する」セグメントで終わらない場合は、"fixed" とみなされます。
      • "/projects/*/releases" + "/{id}" => "/projects/*/releases/{id}"
      パラメーター:
      otherPattern - 現在のパターンと組み合わせるパターン
      戻り値:
      両方のパターンを組み合わせた新しい PathPattern 
      例外:
      IllegalArgumentExceptionSE - 組み合わせが許可されていない場合
    • equals

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

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

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