Package nablarch.fw
Class RequestPathMatchingHelper
java.lang.Object
nablarch.fw.RequestPathMatchingHelper
リクエストパスとリクエストパスのパターンの照合を行うクラス。
リクエストパスは、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)との互換性を保つために存在している。
- Author:
- Masato Inoue
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
isAppliedTo
(Request<?> req, ExecutionContext context) 渡されたリクエストパスと、リクエストパスのパターン文字列との照合を行う。protected boolean
matchesWith
(String directoryPath, String resourceName) リクエストパスのパターンが、引数で指定されたディレクトリパスとリソース名に合致すればtrueを返す。protected String
normalizeRequestPath
(Request<?> req) リクエストパスを正規化する。setRequestPattern
(String requestPattern) 照合に使用するリクエストパスのパターン文字列を設定する。toString()
-
Constructor Details
-
RequestPathMatchingHelper
public RequestPathMatchingHelper(boolean isReplaceDot) コンストラクタ。 リクエストパスとしてクラスの完全修飾名が渡される場合、本引数にtrueを設定することで、リクエストパス中のドット(.)をスラッシュに変換して、ディスパッチを行うことが可能となる。- Parameters:
isReplaceDot
- リクエストパス内のドットをスラッシュに置換する場合、true
-
-
Method Details
-
setRequestPattern
照合に使用するリクエストパスのパターン文字列を設定する。- Parameters:
requestPattern
- リクエストパスのパターン文字列- Returns:
- このインスタンス自体
-
isAppliedTo
渡されたリクエストパスと、リクエストパスのパターン文字列との照合を行う。- Parameters:
req
- HTTPリクエストオブジェクトcontext
- 実行コンテキスト- Returns:
- マッチする場合はtrue
-
normalizeRequestPath
リクエストパスを正規化する。具体的には以下の処理を行う。 1. 前後の空白文字を除去する。 2. 先頭が"/"でない場合は補完する。 3. リクエストパス中のドット(.)をスラッシュに変換する。(replaceDotフィールドがtrueの場合のみこの変換処理は行われる)
コンストラクタでreplaceDotフィールドにtrueが設定されている場合、リクエストパス中のドット(.)をスラッシュに置換するので、 クラスの完全修飾名がリクエストパスとして渡された場合でもディスパッチを行うことができる。
例) abc.def.HogeAction/B00AA0000 -> abc/def/HogeAction/B00AA0000- Parameters:
req
- HTTPリクエストオブジェクト- Returns:
- 正規化したリクエストパス
-
matchesWith
リクエストパスのパターンが、引数で指定されたディレクトリパスとリソース名に合致すればtrueを返す。- Parameters:
directoryPath
- ディレクトリパスresourceName
- リソース名- Returns:
- 引数で指定されたディレクトリパスとリソース名に合致すればtrue
-
toString
-