public class AntPathMatcher extends java.lang.Object implements 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 つが一致するために両方とも相対でなければなりません。この実装のユーザーは、使用されるコンテキストで意味があるため、パターンの前に "/" を付けるためにパターンをサニタイズすることをお勧めします。
| 修飾子と型 | クラスと説明 |
|---|---|
protected static class | AntPathMatcher.AntPathStringMatcher 文字列が Pattern を介してパターンと一致するかどうかをテストします。 |
protected static class | AntPathMatcher.AntPatternComparatorgetPatternComparator(String) によって返されるデフォルトの Comparator 実装。 |
| 修飾子と型 | フィールドと説明 |
|---|---|
static java.lang.String | DEFAULT_PATH_SEPARATOR デフォルトのパス区切り文字: "/" |
| コンストラクターと説明 |
|---|
AntPathMatcher()DEFAULT_PATH_SEPARATOR を使用して新しいインスタンスを作成します。 |
AntPathMatcher(java.lang.String pathSeparator) カスタムパス区切り文字で使用する便利な代替コンストラクター。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
java.lang.String | combine(java.lang.String pattern1, java.lang.String pattern2)2 つのパターンを新しいパターンに結合します。 |
protected boolean | doMatch(java.lang.String pattern, java.lang.String path, boolean fullMatch, java.util.Map<java.lang.String,java.lang.String> uriTemplateVariables) 実際に、指定された path を指定された pattern に一致させます。 |
java.lang.String | extractPathWithinPattern(java.lang.String pattern, java.lang.String path) パターンとフルパスを指定して、パターンマッピングされた部分を決定します。 |
java.util.Map<java.lang.String,java.lang.String> | extractUriTemplateVariables(java.lang.String pattern, java.lang.String path) パターンとフルパスを指定して、URI テンプレート変数を抽出します。 |
java.util.Comparator<java.lang.String> | getPatternComparator(java.lang.String path) フルパスを指定すると、明示的な順序でパターンを並べ替えるのに適した Comparator を返します。 |
protected AntPathMatcher.AntPathStringMatcher | getStringMatcher(java.lang.String pattern) 指定されたパターンの AntPathMatcher.AntPathStringMatcher をビルドまたは取得します。 |
boolean | isPattern(java.lang.String path) 指定された path は、このインターフェースの実装によって一致するパターンを表しますか? |
boolean | match(java.lang.String pattern, java.lang.String path) この PathMatcher のマッチング戦略に従って、指定された path を指定された pattern に一致させます。 |
boolean | matchStart(java.lang.String pattern, java.lang.String path) この PathMatcher のマッチング戦略に従って、指定された path を指定された pattern の対応する部分と一致させます。 |
void | setCachePatterns(boolean cachePatterns) このマッチャーの match(java.lang.String, java.lang.String) メソッドに渡されるパターンの解析済みパターンメタデータをキャッシュするかどうかを指定します。 |
void | setCaseSensitive(boolean caseSensitive) 大文字と小文字を区別してパターンマッチングを実行するかどうかを指定します。 |
void | setPathSeparator(java.lang.String pathSeparator) パターン解析に使用するパス区切り文字を設定します。 |
void | setTrimTokens(boolean trimTokens) トークン化されたパスとパターンをトリミングするかどうかを指定します。 |
protected java.lang.String[] | tokenizePath(java.lang.String path) このマッチャーの設定に基づいて、指定されたパス文字列を部分にトークン化します。 |
protected java.lang.String[] | tokenizePattern(java.lang.String pattern) このマッチャーの設定に基づいて、指定されたパスパターンをトークン化してパーツにします。 |
public static final java.lang.String DEFAULT_PATH_SEPARATOR
public AntPathMatcher()
DEFAULT_PATH_SEPARATOR を使用して新しいインスタンスを作成します。public AntPathMatcher(java.lang.String pathSeparator)
pathSeparator - 使用するパス区切り文字。null であってはなりません。public void setPathSeparator(java.lang.String pathSeparator)
Ant の場合のように、デフォルトは "/" です。
public void setCaseSensitive(boolean caseSensitive)
デフォルトは true です。大文字と小文字を区別しないマッチングのために、これを false に切り替えます。
public void setTrimTokens(boolean trimTokens)
デフォルトは false です。
public void setCachePatterns(boolean cachePatterns)
match(java.lang.String, java.lang.String) メソッドに渡されるパターンの解析済みパターンメタデータをキャッシュするかどうかを指定します。true の値は、無制限のパターンキャッシュをアクティブにします。false の値は、パターンキャッシュを完全にオフにします。デフォルトではキャッシュがオンになっていますが、実行時にキャッシュするパターンが多すぎると自動的にオフになるバリアントがあります(しきい値は 65536 です)。パターンの任意の順列が入ってくると想定し、繰り返しパターン。
getStringMatcher(String)public boolean isPattern(java.lang.String path)
PathMatcherpath は、このインターフェースの実装によって一致するパターンを表しますか? 戻り値が false の場合、静的パス文字列での直接の等価比較は同じ結果をもたらすため、PathMatcher.match(java.lang.String, java.lang.String) メソッドを使用する必要はありません。
PathMatcher 内の isPattern path - チェックするパス文字列 path がパターンを表す場合、true public boolean match(java.lang.String pattern,
java.lang.String path)PathMatcherpath を指定された pattern に一致させます。PathMatcher 内の match pattern - 照合するパターン path - テストするパス文字列 path が一致した場合は true、一致しなかった場合は false public boolean matchStart(java.lang.String pattern,
java.lang.String path)PathMatcherpath を指定された pattern の対応する部分と一致させます。完全なパスも一致すると想定して、指定されたベースパスに至るまでパターンが少なくとも一致するかどうかを決定します。
PathMatcher 内の matchStart pattern - 照合するパターン path - テストするパス文字列 path が一致した場合は true、一致しなかった場合は false protected boolean doMatch(java.lang.String pattern,
java.lang.String path,
boolean fullMatch,
java.util.Map<java.lang.String,java.lang.String> uriTemplateVariables)path を指定された pattern に一致させます。pattern - 照合するパターン path - テストするパス文字列 fullMatch - 完全なパターン一致が必要かどうか (それ以外の場合、指定されたベースパスが進む限り、パターンマッチで十分です。)path が一致した場合は true、一致しなかった場合は false protected java.lang.String[] tokenizePattern(java.lang.String pattern)
setCachePatterns(boolean) に基づいてキャッシュを実行し、実際のトークン化アルゴリズムのために tokenizePath(String) に委譲します。
pattern - トークン化するパターン protected java.lang.String[] tokenizePath(java.lang.String path)
path - トークン化するパス protected AntPathMatcher.AntPathStringMatcher getStringMatcher(java.lang.String pattern)
AntPathMatcher.AntPathStringMatcher をビルドまたは取得します。 デフォルトの実装では、この AntPathMatcher の内部キャッシュ(setCachePatterns(boolean) を参照)をチェックし、キャッシュされたコピーが見つからない場合、新しい AntPathStringMatcher インスタンスを作成します。
実行時にキャッシュするパターンが多すぎる場合(しきい値は 65536)、パターンの任意の順列が入ってくると仮定して、デフォルトのキャッシュをオフにし、繰り返しパターンに遭遇する可能性はほとんどありません。
このメソッドは、カスタムキャッシュ戦略を実装するためにオーバーライドされる場合があります。
pattern - 照合するパターン (非 null)null ではない)setCachePatterns(boolean)public java.lang.String extractPathWithinPattern(java.lang.String pattern,
java.lang.String 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 を返すと仮定しますが、これを強制しません。
PathMatcher 内の extractPathWithinPattern pattern - パスパターン path - イントロスペクトへのフルパス path のパターンマッピングされた部分 (非 null)public java.util.Map<java.lang.String,java.lang.String> extractUriTemplateVariables(java.lang.String pattern,
java.lang.String path)PathMatcher次に例を示します: パターン "/hotels/{hotel}" およびパス "/hotels/1" の場合、このメソッドは "hotel" -> "1" を含むマップを返します。
PathMatcher 内の extractUriTemplateVariables pattern - おそらく URI テンプレートを含むパスパターン path - テンプレート変数を抽出するフルパス public java.lang.String combine(java.lang.String pattern1,
java.lang.String pattern2) この実装は、最初のパターンにファイル拡張子の一致(例: *.html)が含まれていない限り、2 つのパターンを単に連結します。その場合、2 番目のパターンは最初のパターンにマージされます。そうでない場合、IllegalArgumentException がスローされます。
| パターン 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 番目のパターン java.lang.IllegalArgumentException - 2 つのパターンを結合できない場合 public java.util.Comparator<java.lang.String> getPatternComparator(java.lang.String path)
Comparator を返します。 この Comparator は、より具体的なパターン(uri テンプレートやワイルドカードなし)が一般的なパターンの前に来るようにリストをソートします。次のパターンのリストが与えられます。
/hotels/new/hotels/{hotel}/hotels/* パラメーターとして指定された完全パスは、完全一致をテストするために使用されます。指定されたパスが /hotels/2 の場合、パターン /hotels/2 は /hotels/1 の前にソートされます。
PathMatcher 内の getPatternComparator path - 比較に使用する完全なパス