@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
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://login (現在のページからの相対パス)
redirect:///UserAction/login (サーブレットコンテキストを起点とする相対パス)
http://www.example.com/login (外部サイトのURL)
このクラスは不変クラスである。
| 修飾子とタイプ | フィールドと説明 |
|---|---|
static java.util.regex.Pattern |
ALLOWED_CHAR
コンテンツパス中のディレクトリとして許容される文字列。
|
static java.lang.String |
SCHEMES
対応するスキーム名
|
| 修飾子とタイプ | メソッドと説明 |
|---|---|
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オブジェクトを生成する。 |
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。
コンテキストクラスローダ上のリソースである場合、常にfalsepublic java.lang.String getResourceName()
public java.lang.String getPath()
public java.lang.String toString()
toString クラス内 java.lang.Objectpublic java.lang.String getRealPath()
throws java.lang.UnsupportedOperationException
nullを返すjava.lang.UnsupportedOperationException - 静的ファイルでもクラスローダ上のリソースでもない場合public boolean exists()
true。
内部フォーワード/サーブレットフォーワードの場合は常にtrue。
リダイレクトである場合は常にfalsepublic 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()
truepublic java.lang.String getHostname()
public java.lang.String getDirectory()