@Published public final class ResourceLocator extends java.lang.Object
リソースロケータとは、本フレームワークにおいて、何らかのリソースを指定する際に用いられる汎用的書式である。 以下のように定義される。 (スキーム名)://(ディレクトリパス)/(リソース名) リソースロケータの使用場面例 - 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) このクラスは不変クラスである。
Modifier and Type | Field and Description |
---|---|
static java.util.regex.Pattern |
ALLOWED_CHAR
コンテンツパス中のディレクトリとして許容される文字列。
|
static java.lang.String |
SCHEMES
対応するスキーム名
|
Modifier and Type | Method and Description |
---|---|
boolean |
exists()
このリソースの実体が存在するかどうか判定する。
|
java.lang.String |
getDirectory()
パスからディレクトリを表す部分を返す。
|
java.lang.String |
getHostname()
パスのホスト部を返す。
ポート番号が設定されている場合には、ポート番号を含んだ値を返す。
|
java.io.InputStream |
getInputStream()
リソースの内容をストリームで読み出すための
InputStream を返す。 |
java.lang.String |
getPath()
パス文字列を返す。
パスにクエリーパラメータやフラグメントがある場合、
これらを含んだ値をパスとして返す。
|
java.io.Reader |
getReader()
リソースの内容を読み出すための
Reader を返す。 |
java.lang.String |
getRealPath()
リソースのファイルシステム上での絶対パスを返す。
|
java.lang.String |
getResourceName()
リソース名を返す。
|
java.lang.String |
getScheme()
このリソースパスのスキーム名を返す。
|
boolean |
isRedirect()
レスポンスがリダイレクトかどうか判定する。
|
boolean |
isRelative()
設定されたパスが相対パスかどうか。
|
java.lang.String |
toString()
リソースパスの文字列表現そのものを返す。
|
static ResourceLocator |
valueOf(java.lang.String path)
リソースの文字列表現から
ResourceLocator オブジェクトを生成する。
"file|classpath|forward|servlet|redirect|https|http"に含まれないスキームを指定した場合、スキームは常に「servlet」となる。 |
public static final java.lang.String SCHEMES
public static final java.util.regex.Pattern ALLOWED_CHAR
"/", "~" はNG。 2以上連続する"."もNG。
public static ResourceLocator valueOf(java.lang.String path)
ResourceLocator
オブジェクトを生成する。
"file|classpath|forward|servlet|redirect|https|http"に含まれないスキームを指定した場合、スキームは常に「servlet」となる。path
- リソースの文字列表現HttpErrorResponse
- リソースパスが無効な書式である場合public java.lang.String getScheme()
public boolean isRelative()
true
。
コンテキストクラスローダ上のリソースである場合、常にfalse
public java.lang.String getResourceName()
public java.lang.String getPath()
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String getRealPath() throws java.lang.UnsupportedOperationException
null
を返すjava.lang.UnsupportedOperationException
- 静的ファイルでもクラスローダ上のリソースでもない場合public boolean exists()
true
。
内部フォーワード/サーブレットフォーワードの場合は常にtrue
。
リダイレクトである場合は常にfalse
public java.io.Reader getReader() throws java.io.FileNotFoundException
Reader
を返す。java.io.FileNotFoundException
- 静的ファイルでもクラスローダ上のリソースでもない場合か、
静的ファイルかクラスローダ上のリソースだが絶対パスを取得できなかった場合public java.io.InputStream getInputStream() throws java.io.FileNotFoundException
InputStream
を返す。java.io.FileNotFoundException
- 静的ファイルでもクラスローダ上のリソースでもない場合か、
静的ファイルかクラスローダ上のリソースだが絶対パスを取得できなかった場合public boolean isRedirect()
true
public java.lang.String getHostname()
public java.lang.String getDirectory()