Package nablarch.fw.web
Class ResourceLocator
java.lang.Object
nablarch.fw.web.ResourceLocator
各種リソースを識別する為の文字列(リソースロケータ)をパースして格納するクラス。
リソースロケータとは、本フレームワークにおいて、何らかのリソースを指定する際に用いられる汎用的書式である。
以下のように定義される。
(スキーム名)://(ディレクトリパス)/(リソース名)
リソースロケータの使用場面例
- HTTPレスポンスの内容を格納したリソースを指定するケース
// 業務Actionから"jsp/success.jsp" に対してフォーワード
new HttpResponse("200", "servlet://jsp/success.jsp");
現時点でサポートされるスキームは以下の5つである。
1. 静的ファイル
ファイルシステム上の静的ファイルの内容を出力する。
絶対パスもしくは相対パスで指定することが可能である。
(書式)
file://(コンテンツファイルへのパス)
(例)
file://./webapps/style/common.css (相対パス)
file:///www/docroot/style/common.css (絶対パス)
2. Javaコンテキストクラスローダ上のリソース
コンテキストクラスローダ上のリソースの内容を出力する。
(書式)
classpath://(Javaリソース名)
(例)
classpath://nablarch/sample/webapp/common.css
classpath指定は、ファイルシステム上に存在しているファイルのみ指定できる。
このため、jarなどでアーカイブされたファイルについてはclasspathを指定することは出来ない。
また、バーチャルファイルシステムを用いてファイルを管理するようなWebアプリケーションサーバの場合、
ファイルシステム上に存在しているファイルの場合でも、classpathの指定は出来ない。
このため、classpathではなく静的ファイル(file://)の使用を推奨する。
3. 内部フォーワード
リクエストプロセッサに対して、指定したリクエストURIでの再処理を要求する。
HttpRequest・ExecutionContextはそのまま流用される。
(書式)
forward://(フォーワード名)
(例)
forward://registerForm.html (現在のURIからの相対パス)
forward:///app/user/registerForm.html (絶対パス)
4. サーブレットフォーワード
サーブレットコンテナに対してフォーワードを行う。
この場合、レスポンスの出力処理自体がフォーワード先のサーブレットに委譲される。
(書式)
servlet://(フォーワード名)
(例)
servlet://jsp/index.jsp (現在のページからの相対パス)
servlet:///jsp/index.jsp (サーブレットコンテキストを起点とする相対パス)
5. リダイレクト
この場合は、指定されたパスへのリダイレクションを指示するレスポンスを行う。
(書式)
redirect://(リダイレクト先パス)
http(s)://(リダイレクト先URL)
redirect:(リダイレクト先の絶対URL)
(例)
redirect://login (現在のページからの相対パス)
redirect:///UserAction/login (サーブレットコンテキストを起点とする相対パス)
http://www.example.com/login (外部サイトのURL)
redirect:myapp://example.com (モバイルアプリのカスタムスキームを持つURL)
このクラスは不変クラスである。
- Author:
- Iwauo Tajima <iwauo@tis.co.jp>
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionbooleanexists()このリソースの実体が存在するかどうか判定する。パスからディレクトリを表す部分を返す。パスのホスト部を返す。 ポート番号が設定されている場合には、ポート番号を含んだ値を返す。リソースの内容をストリームで読み出すためのInputStreamを返す。getPath()パス文字列を返す。 パスにクエリーパラメータやフラグメントがある場合、 これらを含んだ値をパスとして返す。リソースの内容を読み出すためのReaderを返す。リソースのファイルシステム上での絶対パスを返す。リソース名を返す。このリソースパスのスキーム名を返す。booleanレスポンスがリダイレクトかどうか判定する。boolean設定されたパスが相対パスかどうか。toString()リソースパスの文字列表現そのものを返す。static ResourceLocatorリソースの文字列表現からResourceLocatorオブジェクトを生成する。
-
Field Details
-
SCHEMES
対応するスキーム名- See Also:
-
ALLOWED_CHAR
コンテンツパス中のディレクトリとして許容される文字列。"/", "~" はNG。 2以上連続する"."もNG。
-
-
Method Details
-
valueOf
リソースの文字列表現からResourceLocatorオブジェクトを生成する。 "file|classpath|forward|servlet|redirect|https|http"に含まれないスキームを指定した場合、スキームは常に「servlet」となる。- Parameters:
path- リソースの文字列表現- Returns:
- 生成されたオブジェクト
- Throws:
HttpErrorResponse- リソースパスが無効な書式である場合
-
getScheme
このリソースパスのスキーム名を返す。- Returns:
- スキーム名
-
isRelative
public boolean isRelative()設定されたパスが相対パスかどうか。- Returns:
- 相対パス表記であれば
true。 コンテキストクラスローダ上のリソースである場合、常にfalse
-
getResourceName
リソース名を返す。- Returns:
- リソース名
-
getPath
パス文字列を返す。 パスにクエリーパラメータやフラグメントがある場合、 これらを含んだ値をパスとして返す。- Returns:
- パス文字列
-
toString
リソースパスの文字列表現そのものを返す。 -
getRealPath
リソースのファイルシステム上での絶対パスを返す。- Returns:
- 絶対パスを返す。絶対パスが取得できない場合
nullを返す - Throws:
UnsupportedOperationException- 静的ファイルでもクラスローダ上のリソースでもない場合
-
exists
public boolean exists()このリソースの実体が存在するかどうか判定する。- Returns:
- このリソースの実体が存在する場合は
true。 内部フォーワード/サーブレットフォーワードの場合は常にtrue。 リダイレクトである場合は常にfalse
-
getReader
リソースの内容を読み出すためのReaderを返す。- Returns:
- リソースの内容を読み出すためのReader
- Throws:
FileNotFoundException- 静的ファイルでもクラスローダ上のリソースでもない場合か、 静的ファイルかクラスローダ上のリソースだが絶対パスを取得できなかった場合
-
getInputStream
リソースの内容をストリームで読み出すためのInputStreamを返す。- Returns:
- リソースの内容を読み出すためのInputStream
- Throws:
FileNotFoundException- 静的ファイルでもクラスローダ上のリソースでもない場合か、 静的ファイルかクラスローダ上のリソースだが絶対パスを取得できなかった場合
-
isRedirect
public boolean isRedirect()レスポンスがリダイレクトかどうか判定する。- Returns:
- レスポンスがリダイレクトであれば
true
-
getHostname
パスのホスト部を返す。 ポート番号が設定されている場合には、ポート番号を含んだ値を返す。- Returns:
- パスのホスト部
-
getDirectory
パスからディレクトリを表す部分を返す。- Returns:
- パスのディレクトリ部
-