パッケージ org.springframework.util

クラス AntPathMatcher

java.lang.ObjectSE
org.springframework.util.AntPathMatcher
実装されたすべてのインターフェース:
PathMatcher

public class AntPathMatcher extends ObjectSE implements PathMatcher
Ant スタイルのパスパターンの PathMatcher 実装。

このマッピングコードの一部は、Apache Ant から親切に借りています。

マッピングは、次のルールを使用して URL と一致します。

  • ? は 1 文字に一致します
  • * はゼロ個以上の文字と一致します
  • ** は、パス内のゼロ個以上のディレクトリに一致します
  • {spring:[a-z]+} は、"spring" という名前のパス変数として正規表現 [a-z]+ と一致します。

サンプル

  • com/t?st.jsp — com/test.jsp に一致しますが、com/tast.jsp または com/txst.jsp にも一致します
  • com/*.jsp — com ディレクトリ内のすべての .jsp ファイルに一致します
  • com/**/test.jsp — com パスにあるすべての test.jsp ファイルに一致します
  • org/springframework/**/*.jsp — org/springframework パスにあるすべての .jsp ファイルに一致します
  • org/**/servlet/bla.jsp — org/springframework/servlet/bla.jsp に一致しますが、org/springframework/testing/servlet/bla.jsp および org/servlet/bla.jsp にも一致します
  • com/{filename:\\w+}.jsp は com/test.jsp と一致し、値 test を filename 変数に割り当てます

注意 : パターンとパスは、2 つが一致するために、両方が絶対的であるか、両方が相対的である必要があります。この実装のユーザーは、パターンが使用されているコンテキストで意味があるため、パターンの前に "/" を付けるためにパターンをサニタイズすることをお勧めします。

導入:
16.07.2003
作成者:
Alef Arendsen, Juergen Hoeller, Rob Harrop, Arjen Poutsma, Rossen Stoyanchev, Sam Brannen, Vladislav Kisel
  • フィールドの詳細

  • コンストラクターの詳細

    • AntPathMatcher

      public AntPathMatcher()
      DEFAULT_PATH_SEPARATOR を使用して新しいインスタンスを作成します。
    • AntPathMatcher

      public AntPathMatcher(StringSE pathSeparator)
      カスタムパス区切り文字で使用する便利な代替コンストラクター。
      パラメーター:
      pathSeparator - 使用するパス区切り文字。null であってはなりません。
      導入:
      4.1
  • メソッドの詳細

    • setPathSeparator

      public void setPathSeparator(@Nullable StringSE pathSeparator)
      パターン解析に使用するパス区切り文字を設定します。

      Ant の場合のように、デフォルトは "/" です。

    • setCaseSensitive

      public void setCaseSensitive(boolean caseSensitive)
      大文字と小文字を区別してパターンマッチングを実行するかどうかを指定します。

      デフォルトは true です。大文字と小文字を区別しないマッチングのために、これを false に切り替えます。

      導入:
      4.2
    • setTrimTokens

      public void setTrimTokens(boolean trimTokens)
      トークン化されたパスとパターンをトリミングするかどうかを指定します。

      デフォルトは false です。

    • setCachePatterns

      public void setCachePatterns(boolean cachePatterns)
      このマッチャーの match(java.lang.String, java.lang.String) メソッドに渡されるパターンの解析済みパターンメタデータをキャッシュするかどうかを指定します。true の値は、無制限のパターンキャッシュをアクティブにします。false の値は、パターンキャッシュを完全にオフにします。

      デフォルトではキャッシュがオンになっていますが、実行時にキャッシュするパターンが多すぎると自動的にオフになるバリアントがあります(しきい値は 65536 です)。パターンの任意の順列が入ってくると想定し、繰り返しパターン。

      導入:
      4.0.1
      関連事項:
    • isPattern

      public boolean isPattern(@Nullable StringSE path)
      インターフェースからコピーされた説明: PathMatcher
      指定された path は、このインターフェースの実装によって一致するパターンを表しますか?

      戻り値が false の場合、静的パス文字列での直接の等価比較は同じ結果をもたらすため、PathMatcher.match(java.lang.String, java.lang.String) メソッドを使用する必要はありません。

      次で指定:
      インターフェース PathMatcherisPattern 
      パラメーター:
      path - チェックするパス
      戻り値:
      指定された path がパターンを表す場合、true 
    • match

      public boolean match(StringSE pattern, StringSE path)
      インターフェースからコピーされた説明: PathMatcher
      この PathMatcher のマッチング戦略に従って、指定された path を指定された pattern に一致させます。
      次で指定:
      インターフェース PathMatchermatch 
      パラメーター:
      pattern - 照合するパターン
      path - テストするパス
      戻り値:
      提供された path が一致した場合は true、一致しなかった場合は false 
    • matchStart

      public boolean matchStart(StringSE pattern, StringSE path)
      インターフェースからコピーされた説明: PathMatcher
      この PathMatcher のマッチング戦略に従って、指定された path を指定された pattern の対応する部分と一致させます。

      完全なパスも一致すると想定して、指定されたベースパスに至るまでパターンが少なくとも一致するかどうかを決定します。

      次で指定:
      インターフェース PathMatchermatchStart 
      パラメーター:
      pattern - 照合するパターン
      path - テストするパス
      戻り値:
      提供された path が一致した場合は true、一致しなかった場合は false 
    • doMatch

      protected boolean doMatch(StringSE pattern, @Nullable StringSE path, boolean fullMatch, @Nullable MapSE<StringSE,StringSE> uriTemplateVariables)
      実際に、指定された path を指定された pattern に一致させます。
      パラメーター:
      pattern - 照合するパターン
      path - テストするパス
      fullMatch - 完全なパターン一致が必要かどうか (それ以外の場合、指定されたベースパスが進む限り、パターンマッチで十分です。)
      戻り値:
      提供された path が一致した場合は true、一致しなかった場合は false 
    • tokenizePattern

      protected StringSE[] tokenizePattern(StringSE pattern)
      このマッチャーの設定に基づいて、指定されたパスパターンをトークン化してパーツにします。

      setCachePatterns(boolean) に基づいてキャッシュを実行し、実際のトークン化アルゴリズムのために tokenizePath(String) に委譲します。

      パラメーター:
      pattern - トークン化するパターン
      戻り値:
      トークン化されたパターン部分
    • tokenizePath

      protected StringSE[] tokenizePath(StringSE path)
      このマッチャーの設定に基づいて、指定されたパスをパーツにトークン化します。
      パラメーター:
      path - トークン化するパス
      戻り値:
      トークン化されたパス部分
    • getStringMatcher

      protected AntPathMatcher.AntPathStringMatcher getStringMatcher(StringSE pattern)
      指定されたパターンの AntPathMatcher.AntPathStringMatcher をビルドまたは取得します。

      デフォルトの実装では、この AntPathMatcher の内部キャッシュ(setCachePatterns(boolean) を参照)をチェックし、キャッシュされたコピーが見つからない場合、新しい AntPathStringMatcher インスタンスを作成します。

      実行時にキャッシュするパターンが多すぎる場合(しきい値は 65536)、パターンの任意の順列が入ってくると仮定して、デフォルトのキャッシュをオフにし、繰り返しパターンに遭遇する可能性はほとんどありません。

      このメソッドは、カスタムキャッシュ戦略を実装するためにオーバーライドされる場合があります。

      パラメーター:
      pattern - 照合するパターン (非 null)
      戻り値:
      対応する AntPathStringMatcher (非 null)
      関連事項:
    • extractPathWithinPattern

      public StringSE extractPathWithinPattern(StringSE pattern, StringSE 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'
      • '/docs/**\/*.html' および '/docs/cvs/commit.html → 'cvs/commit.html'
      • '/*.html' および '/docs/cvs/commit.html → 'docs/cvs/commit.html'
      • '*.html' および '/docs/cvs/commit.html → '/docs/cvs/commit.html'
      • '*' および '/docs/cvs/commit.html → '/docs/cvs/commit.html'

      match(java.lang.String, java.lang.String) が 'pattern' および 'path' に対して true を返すと仮定しますが、これを強制しません。

      次で指定:
      インターフェース PathMatcherextractPathWithinPattern 
      パラメーター:
      pattern - パスパターン
      path - イントロスペクトへのフルパス
      戻り値:
      指定された path のパターンマッピングされた部分 (非 null)
    • extractUriTemplateVariables

      public MapSE<StringSE,StringSE> extractUriTemplateVariables(StringSE pattern, StringSE path)
      インターフェースからコピーされた説明: PathMatcher
      パターンとフルパスを指定して、URI テンプレート変数を抽出します。URI テンプレート変数は、カーリー括弧( "{" および "}" )で表されます。

      次に例を示します: パターン "/hotels/{hotel}" およびパス "/hotels/1" の場合、このメソッドは「ホテル」→ を含むマップを返します。"1"。

      次で指定:
      インターフェース PathMatcherextractUriTemplateVariables 
      パラメーター:
      pattern - おそらく URI テンプレートを含むパスパターン
      path - テンプレート変数を抽出するフルパス
      戻り値:
      キーとして変数名を含むマップ。値としての変数値
    • combine

      public StringSE combine(StringSE pattern1, StringSE pattern2)
      2 つのパターンを新しいパターンに結合します。

      この実装では、最初のパターンにファイル拡張子の一致 (たとえば、*.html) が含まれていない限り、2 つのパターンを単純に連結します。その場合、2 番目のパターンは最初のパターンにマージされます。それ以外の場合は、IllegalArgumentException がスローされます。

      Examples

      パターン 1 パターン 2 結果
      nullnull
      /hotelsnull/hotels
      null/hotels/hotels
      /hotels/bookings/hotels/bookings
      /hotelsbookings/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/*.txtIllegalArgumentException
      次で指定:
      インターフェース PathMatchercombine 
      パラメーター:
      pattern1 - 最初のパターン
      pattern2 - 2 番目のパターン
      戻り値:
      2 つのパターンの組み合わせ
      例外:
      IllegalArgumentExceptionSE - 2 つのパターンを結合できない場合
    • getPatternComparator

      public ComparatorSE<StringSE> getPatternComparator(StringSE path)
      完全なパスを指定すると、明示性の順序でパターンをソートするのに適した ComparatorSE を返します。

      この Comparator は、より具体的なパターン(URI テンプレートまたはワイルドカードなし)が一般的なパターンの前に来るようにリストをソートSEします。したがって、次のパターンのリストが与えられると、返されるコンパレータはこのリストをソートして、示されている順序になります。

      1. /hotels/new
      2. /hotels/{hotel}
      3. /hotels/*

      パラメーターとして指定された完全パスは、完全一致をテストするために使用されます。指定されたパスが /hotels/2 の場合、パターン /hotels/2 は /hotels/1 の前にソートされます。

      次で指定:
      インターフェース PathMatchergetPatternComparator 
      パラメーター:
      path - 比較に使用する完全なパス
      戻り値:
      明示的な順序でパターンをソートできるコンパレータ