Class ResourceMapping

java.lang.Object
nablarch.fw.web.handler.ResourceMapping
All Implemented Interfaces:
Handler<HttpRequest,HttpResponse>, HttpRequestHandler

public class ResourceMapping extends Object implements HttpRequestHandler
リクエストURIに応じて、リソースファイルに対するマッピングを行うリクエストハンドラ。
 画像等の静的ファイルへのリクエストやフォーワードを介さないJSP画面へのアクセスは、
 通常、Webサーバ・アプリケーションサーバでレスポンスを行う為、フレームワーク側で制御することができない。
 このリクエストハンドラを経由させることで、これらのアクセスについても
 認可を始めとする共通処理の制御下におくことができる。
 マッピング先のパスには、HttpResponse.setContentPath(String)の書式に従って、
 以下の3種類のいずれかを指定することができる。
   1. コンテキストクラスローダ上のリソース
   2. サーブレットフォーワード(JSPを含む)
   3. 内部フォーワードの実行結果
 ただし、ファイルシステム上のローカルファイル(file://スキーム)は使用できない。
 
 次の例では、特定のベースURI(/webapp/resource/)下の画像ファイルに対するリクエストを、
 サーブレットコンテキスト上のリソース(/WEB-INF/resource/)を参照するようにマッピングしている。
 こうすることで、これらのファイルをフレームワークの認証・認可の制御下に置くことができる。
   new StaticResource("/admin/resource/", "servlet:///WEB-INF/resource/");
 HTTPリクエストと、それに対するレスポンスのコンテンツパスとの対応は以下のようになる。
 ===========================================================================
  HTTPリクエストライン                コンテンツパス [コンテンツタイプ]
 ===========================================================================
 GET /admin/resource/style.css  ->  servlet:///WEB-INF/resource/style.css 
                                    [text/css]
 -------------------------------    --------------------------------------
 GET /admin/resource/js/init.js ->  servlet:///WEB-INF/resource/js/init.js
                                    [application/javascript]
 ===========================================================================
 
See Also:
  • Constructor Details

    • ResourceMapping

      public ResourceMapping(String baseUri, String basePath)
      特定のbaseUri配下へのリクエストを静的ファイルにマッピングする リクエストハンドラを生成する。
      Parameters:
      baseUri - マッピング元ベースURI
      basePath - マッピング先リソースパス
    • ResourceMapping

      public ResourceMapping()
      デフォルトコンストラクタ。
  • Method Details

    • setBaseUri

      public ResourceMapping setBaseUri(String baseUri)
      マッピング元ベースURIを設定する。
      Parameters:
      baseUri - マッピング元ベースURI
      Returns:
      このオブジェクト自体
    • setBasePath

      public ResourceMapping setBasePath(String basePath)
      マッピング先リソースパスを設定する。
      Parameters:
      basePath - マッピング先リソースパス
      Returns:
      このオブジェクト自体
    • handle

      public HttpResponse handle(HttpRequest req, ExecutionContext ctx)
      HTTPリクエストに対する処理を実行する。
       このクラスの実装では以下の処理を行う。
         1. リクエストURI中のbaseUri以下の部分を取得する。
         2. docRootに1.の結果を連結した文字列をコンテンツタイプとする。
         3. リクエストURIの拡張子からコンテンツタイプを判定する。
         4. HttpResponseを生成し、2,3の結果をそれに設定する。
         5. 4の結果を返す。
       
      Specified by:
      handle in interface Handler<HttpRequest,HttpResponse>
      Specified by:
      handle in interface HttpRequestHandler
      Parameters:
      req - HTTPリクエストオブジェクト
      ctx - サーバサイド実行コンテキストオブジェクト
      Returns:
      HTTPレスポンスオブジェクト
      See Also: