クラス 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
文字列がPattern
SE を介してパターンと一致するかどうかをテストします。protected static class
getPatternComparator(String)
によって返されるデフォルトのComparator
SE 実装。フィールドサマリー
コンストラクターのサマリー
コンストラクター説明DEFAULT_PATH_SEPARATOR
を使用して新しいインスタンスを作成します。AntPathMatcher
(StringSE pathSeparator) カスタムパス区切り文字で使用する便利な代替コンストラクター。メソッドのサマリー
修飾子と型メソッド説明2 つのパターンを新しいパターンに結合します。protected boolean
doMatch
(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) 完全なパスを指定すると、明示性の順序でパターンをソートするのに適したComparator
SE を返します。protected AntPathMatcher.AntPathStringMatcher
getStringMatcher
(StringSE pattern) 指定されたパターンのAntPathMatcher.AntPathStringMatcher
をビルドまたは取得します。boolean
指定されたpath
は、このインターフェースの実装によって一致するパターンを表しますか?boolean
この PathMatcher のマッチング戦略に従って、指定されたpath
を指定されたpattern
に一致させます。boolean
matchStart
(StringSE pattern, StringSE path) この PathMatcher のマッチング戦略に従って、指定されたpath
を指定されたpattern
の対応する部分と一致させます。void
setCachePatterns
(boolean cachePatterns) このマッチャーのmatch(java.lang.String, java.lang.String)
メソッドに渡されるパターンの解析済みパターンメタデータをキャッシュするかどうかを指定します。void
setCaseSensitive
(boolean caseSensitive) 大文字と小文字を区別してパターンマッチングを実行するかどうかを指定します。void
setPathSeparator
(StringSE pathSeparator) パターン解析に使用するパス区切り文字を設定します。void
setTrimTokens
(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 結果 null
null
/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
完全なパスを指定すると、明示性の順序でパターンをソートするのに適したComparator
SE を返します。この
Comparator
は、より具体的なパターン(URI テンプレートまたはワイルドカードなし)が一般的なパターンの前に来るようにリストをソートSEします。したがって、次のパターンのリストが与えられると、返されるコンパレータはこのリストをソートして、示されている順序になります。/hotels/new
/hotels/{hotel}
/hotels/*
パラメーターとして指定された完全パスは、完全一致をテストするために使用されます。指定されたパスが
/hotels/2
の場合、パターン/hotels/2
は/hotels/1
の前にソートされます。- 次で指定:
- インターフェース
PathMatcher
のgetPatternComparator
- パラメーター:
path
- 比較に使用する完全なパス- 戻り値:
- 明示的な順序でパターンをソートできるコンパレータ