public class RequestPathMatchingHelper
extends java.lang.Object
リクエストパスは、URI、Unixのシステムパス、Javaの名前空間のように、"/"で区切られた 階層構造をもつリクエストパスを想定し、そのパターンをGlob式に似た書式で指定する。 1. ワイルドカードの指定等、基本的にUnixやDOSで使用されるGlob式の記法に準じる。 '*'はワイルドカードであり'.'と'/'を除く任意の文字の任意個の列にマッチする。 ------------------------------- --------------------- ------------------ リクエストパスのパターン リクエストパス 照合結果 ------------------------------- --------------------- ------------------ / / OK /index.jsp NG ------------------------------- --------------------- ------------------ /* / OK /app OK /app/ NG (*は'/'にはマッチしない) /index.jsp NG (*は'.'にはマッチしない) ------------------------------- --------------------- ------------------ /app/*.jsp /app/index.jsp OK /app/admin NG ------------------------------- --------------------- ------------------ /app/* /test /app/admin/test OK /app/test/ NG ------------------------------- --------------------- ------------------ 2. 最後尾の'/'が'//'と重ねられていた場合、それ以前の文字列について 前方一致すればマッチ成功と判定する。 リソース名を表す'//'以降の文字列については別途マッチ判定が行われる。 (すなわち、"サブディレクトリ全体"に対してマッチする。) -------------------------------- -------------------- ------------------ リクエストパスのパターン リクエストパス 照合結果 -------------------------------- -------------------- ------------------ /app// / NG /app/ OK /app/admin/ OK /app/admin/index.jsp OK -------------------------------- -------------------- ------------------ //*.jsp /app/index.jsp OK /app/admin/index.jsp OK /app/index.html NG('*.jsp'がマッチしない) -------------------------------- -------------------- ------------------リクエストパスのパターンのマッチングは、リクエストパス中のすべてのドット(.)をスラッシュ(/)に置換してから行う。 この仕様は、Nablarch のバッチ処理で過去に使用していたドット区切りのリクエストパス(例: ss01A001.B01AA001Action/B01AA0010)との互換性を保つために存在している。
Constructor and Description |
---|
RequestPathMatchingHelper(boolean isReplaceDot)
コンストラクタ。
リクエストパスとしてクラスの完全修飾名が渡される場合、本引数にtrueを設定することで、リクエストパス中のドット(.)をスラッシュに変換して、ディスパッチを行うことが可能となる。
|
Modifier and Type | Method and Description |
---|---|
boolean |
isAppliedTo(Request<?> req,
ExecutionContext context)
渡されたリクエストパスと、リクエストパスのパターン文字列との照合を行う。
|
protected boolean |
matchesWith(java.lang.String directoryPath,
java.lang.String resourceName)
リクエストパスのパターンが、引数で指定されたディレクトリパスとリソース名に合致すればtrueを返す。
|
protected java.lang.String |
normalizeRequestPath(Request<?> req)
リクエストパスを正規化する。
|
RequestPathMatchingHelper |
setRequestPattern(java.lang.String requestPattern)
照合に使用するリクエストパスのパターン文字列を設定する。
|
java.lang.String |
toString() |
public RequestPathMatchingHelper(boolean isReplaceDot)
isReplaceDot
- リクエストパス内のドットをスラッシュに置換する場合、truepublic RequestPathMatchingHelper setRequestPattern(java.lang.String requestPattern)
requestPattern
- リクエストパスのパターン文字列public boolean isAppliedTo(Request<?> req, ExecutionContext context)
req
- HTTPリクエストオブジェクトcontext
- 実行コンテキストprotected java.lang.String normalizeRequestPath(Request<?> req)
具体的には以下の処理を行う。 1. 前後の空白文字を除去する。 2. 先頭が"/"でない場合は補完する。 3. リクエストパス中のドット(.)をスラッシュに変換する。(replaceDotフィールドがtrueの場合のみこの変換処理は行われる)コンストラクタでreplaceDotフィールドにtrueが設定されている場合、リクエストパス中のドット(.)をスラッシュに置換するので、 クラスの完全修飾名がリクエストパスとして渡された場合でもディスパッチを行うことができる。
req
- HTTPリクエストオブジェクトprotected boolean matchesWith(java.lang.String directoryPath, java.lang.String resourceName)
directoryPath
- ディレクトリパスresourceName
- リソース名public java.lang.String toString()
toString
in class java.lang.Object