クラス AntPathMatcher
- 実装されているすべてのインターフェース:
PathMatcher
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
ネストされたクラスの要約
ネストされたクラス修飾子と型クラス説明protected static class文字列がPatternSE を介してパターンと一致するかどうかをテストします。protected static classgetPatternComparator(String)によって返されるデフォルトのComparatorSE 実装。フィールドのサマリー
フィールドコンストラクターの概要
コンストラクターコンストラクター説明DEFAULT_PATH_SEPARATORを使用して新しいインスタンスを作成します。AntPathMatcher(StringSE pathSeparator) カスタムパス区切り文字で使用する便利な代替コンストラクター。メソッドのサマリー
修飾子と型メソッド説明2 つのパターンを新しいパターンに結合します。protected booleandoMatch(StringSE pattern, StringSE path, boolean fullMatch, MapSE<StringSE, StringSE> uriTemplateVariables) 実際に、指定されたpathを指定されたpatternに一致させます。extractPathWithinPattern(StringSE pattern, StringSE path) パターンとフルパスを指定して、パターンマッピングされた部分を決定します。extractUriTemplateVariables(StringSE pattern, StringSE path) パターンとフルパスを指定して、URI テンプレート変数を抽出します。getPatternComparator(StringSE path) 完全なパスを指定すると、明示性の順序でパターンをソートするのに適したComparatorSE を返します。protected AntPathMatcher.AntPathStringMatchergetStringMatcher(StringSE pattern) 指定されたパターンのAntPathMatcher.AntPathStringMatcherをビルドまたは取得します。boolean指定されたpathは、このインターフェースの実装によって一致するパターンを表しますか?booleanこの PathMatcher のマッチング戦略に従って、指定されたpathを指定されたpatternに一致させます。booleanmatchStart(StringSE pattern, StringSE path) この PathMatcher のマッチング戦略に従って、指定されたpathを指定されたpatternの対応する部分と一致させます。voidsetCachePatterns(boolean cachePatterns) このマッチャーのmatch(java.lang.String, java.lang.String)メソッドに渡されるパターンの解析済みパターンメタデータをキャッシュするかどうかを指定します。voidsetCaseSensitive(boolean caseSensitive) 大文字と小文字を区別してパターンマッチングを実行するかどうかを指定します。voidsetPathSeparator(StringSE pathSeparator) パターン解析に使用するパス区切り文字を設定します。voidsetTrimTokens(boolean trimTokens) トークン化されたパスとパターンをトリミングするかどうかを指定します。protected StringSE[]tokenizePath(StringSE path) このマッチャーの設定に基づいて、指定されたパスをパーツにトークン化します。protected StringSE[]tokenizePattern(StringSE pattern) このマッチャーの設定に基づいて、指定されたパスパターンをトークン化してパーツにします。
フィールドの詳細
DEFAULT_PATH_SEPARATOR
デフォルトのパス区切り文字: "/".- 関連事項:
コンストラクターの詳細
AntPathMatcher
public AntPathMatcher()DEFAULT_PATH_SEPARATORを使用して新しいインスタンスを作成します。AntPathMatcher
カスタムパス区切り文字で使用する便利な代替コンストラクター。- パラメーター:
pathSeparator- 使用するパス区切り文字。nullであってはなりません。- 導入:
- 4.1
メソッドの詳細
setPathSeparator
パターン解析に使用するパス区切り文字を設定します。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
インターフェースからコピーされた説明:PathMatcher指定されたpathは、このインターフェースの実装によって一致するパターンを表しますか?戻り値が
falseの場合、静的パス文字列での直接の等価比較は同じ結果をもたらすため、PathMatcher.match(java.lang.String, java.lang.String)メソッドを使用する必要はありません。- 次で指定:
- インターフェース
PathMatcherのisPattern - パラメーター:
path- チェックするパス- 戻り値:
- 指定された
pathがパターンを表す場合、true
match
インターフェースからコピーされた説明:PathMatcherこの PathMatcher のマッチング戦略に従って、指定されたpathを指定されたpatternに一致させます。- 次で指定:
- インターフェース
PathMatcherのmatch - パラメーター:
pattern- 照合するパターンpath- テストするパス- 戻り値:
- 提供された
pathが一致した場合はtrue、一致しなかった場合はfalse
matchStart
インターフェースからコピーされた説明:PathMatcherこの PathMatcher のマッチング戦略に従って、指定されたpathを指定されたpatternの対応する部分と一致させます。完全なパスも一致すると想定して、指定されたベースパスに至るまでパターンが少なくとも一致するかどうかを決定します。
- 次で指定:
- インターフェース
PathMatcherのmatchStart - パラメーター:
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
このマッチャーの設定に基づいて、指定されたパスパターンをトークン化してパーツにします。setCachePatterns(boolean)に基づいてキャッシュを実行し、実際のトークン化アルゴリズムのためにtokenizePath(String)に委譲します。- パラメーター:
pattern- トークン化するパターン- 戻り値:
- トークン化されたパターン部分
tokenizePath
このマッチャーの設定に基づいて、指定されたパスをパーツにトークン化します。- パラメーター:
path- トークン化するパス- 戻り値:
- トークン化されたパス部分
getStringMatcher
指定されたパターンのAntPathMatcher.AntPathStringMatcherをビルドまたは取得します。デフォルトの実装では、この AntPathMatcher の内部キャッシュ(
setCachePatterns(boolean)を参照)をチェックし、キャッシュされたコピーが見つからない場合、新しい AntPathStringMatcher インスタンスを作成します。実行時にキャッシュするパターンが多すぎる場合(しきい値は 65536)、パターンの任意の順列が入ってくると仮定して、デフォルトのキャッシュをオフにし、繰り返しパターンに遭遇する可能性はほとんどありません。
このメソッドは、カスタムキャッシュ戦略を実装するためにオーバーライドされる場合があります。
- パラメーター:
pattern- 照合するパターン (非null)- 戻り値:
- 対応する AntPathStringMatcher (非
null) - 関連事項:
extractPathWithinPattern
パターンとフルパスを指定して、パターンマッピングされた部分を決定します。例:
- '
/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を返すと仮定しますが、これを強制しません。- 次で指定:
- インターフェース
PathMatcherのextractPathWithinPattern - パラメーター:
pattern- パスパターンpath- イントロスペクトへのフルパス- 戻り値:
- 指定された
pathのパターンマッピングされた部分 (非null)
- '
extractUriTemplateVariables
インターフェースからコピーされた説明:PathMatcherパターンとフルパスを指定して、URI テンプレート変数を抽出します。URI テンプレート変数は、カーリー括弧( "{" および "}" )で表されます。次に例を示します: パターン "/hotels/{hotel}" およびパス "/hotels/1" の場合、このメソッドは「ホテル」→ を含むマップを返します。"1"。
- 次で指定:
- インターフェース
PathMatcherのextractUriTemplateVariables - パラメーター:
pattern- おそらく URI テンプレートを含むパスパターンpath- テンプレート変数を抽出するフルパス- 戻り値:
- キーとして変数名を含むマップ。値としての変数値
combine
2 つのパターンを新しいパターンに結合します。この実装は、最初のパターンにファイル拡張子の一致(例:
*.html)が含まれていない限り、2 つのパターンを単に連結します。その場合、2 番目のパターンは最初のパターンにマージされます。そうでない場合、IllegalArgumentExceptionがスローされます。Examples
パターン 1 パターン 2 結果 nullnull/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- 次で指定:
- インターフェース
PathMatcherのcombine - パラメーター:
pattern1- 最初のパターンpattern2- 2 番目のパターン- 戻り値:
- 2 つのパターンの組み合わせ
- 例外:
IllegalArgumentExceptionSE- 2 つのパターンを結合できない場合
getPatternComparator
完全なパスを指定すると、明示性の順序でパターンをソートするのに適したComparatorSE を返します。この
Comparatorは、より具体的なパターン(URI テンプレートまたはワイルドカードなし)が一般的なパターンの前に来るようにリストをソートSEします。したがって、次のパターンのリストが与えられると、返されるコンパレータはこのリストをソートして、示されている順序になります。/hotels/new/hotels/{hotel}/hotels/*
パラメーターとして指定された完全パスは、完全一致をテストするために使用されます。指定されたパスが
/hotels/2の場合、パターン/hotels/2は/hotels/1の前にソートされます。- 次で指定:
- インターフェース
PathMatcherのgetPatternComparator - パラメーター:
path- 比較に使用する完全なパス- 戻り値:
- 明示的な順序でパターンをソートできるコンパレータ