6.2.6. リソースマッピングハンドラ

本ハンドラは、業務アクションを経由せずにレスポンスを返却する機能を提供する。 本機能は、静的リソースをNablarchのハンドラを経由してダウンロードする際に使用する。

重要

本ハンドラを使用して静的リソースをダウンロードする方法には、「ログが大量に出力される」、 「大量アクセスがあるサーバで、アプリケーションサーバの負荷が大きい」といったデメリットがある。

このため、ハンドラを経由させる必要がない静的リソースのダウンロードについては、 本ハンドラの使用を推奨しない。 静的リソースについては、ウェブコンテナまたはウェブサーバの機能でダウンロードを行うようにし、 本ハンドラを使用するのは「コンテンツのダウンロードに認可チェックを行う必要がある」など、 他のハンドラを経由する必要のあるコンテンツに限って使用すること。

本ハンドラでは、以下の処理を行う。

  • 静的リソースダウンロードを行うレスポンスを返す

重要

本ハンドラは主に、 リクエストハンドラエントリ と組み合わせて 「特定の拡張子の場合に静的リソースの ダウンロードを行う」 機能の実現に使用する。

この用途での使用例は リクエストハンドラエントリの使用例 を参照。

処理の流れは以下のとおり。 なお、図にある通り本ハンドラは後続のハンドラの呼び出しを行わない。

../../../../_images/flow39.png

6.2.6.2. モジュール一覧

<dependency>
  <groupId>com.nablarch.framework</groupId>
  <artifactId>nablarch-fw-web</artifactId>
</dependency>

6.2.6.3. 制約

内部フォーワードハンドラ よりも後に配置すること
本ハンドラは、 内部フォーワードハンドラ の機能により提供される forward:// スキームを使用できる。 このため、本ハンドラは 内部フォーワードハンドラ より後に配置する必要がある。
HTTPレスポンスハンドラ よりも後に配置すること
本ハンドラは、 HTTPレスポンスハンドラ の機能により提供される servlet://file://classpath:// スキームを使用できる。 また、エラーが発生した際は 404(Not Found)の応答を返す。 これらの応答を処理するため、本ハンドラは HTTPレスポンスハンドラ より後に配置する必要がある。

6.2.6.4. 静的リソースのダウンロード

本ハンドラの主たる用途である、静的リソースのダウンロードを行う際には baseUribasePath 2つのプロパティを以下のように設定する。

<!-- 画像ファイルの静的リソースダウンロードを行うハンドラ -->
<component name="imgMapping"
           class="nablarch.fw.web.handler.ResourceMapping">
  <property name="baseUri" value="/"/>
  <property name="basePath" value="servlet:///"/>
</component>

それぞれの設定項目の意味は下記の通り

設定項目 意味
baseUri 処理対象のURL。このURLにマッチしない場合、ハンドラは
HTTPステータス404(NotFound)の応答を返す。
basePath baseUriにマッチした場合のレスポンスのベースURL。
スキーマ指定を省略した場合、 servlet:// スキーマが使用される。

ただし、上記設定のハンドラを単純にハンドラキューに入れた場合、サーバに送られたすべてのURLの処理が 静的リソースとして処理される。 つまり、ハンドラキュー上の本ハンドラ以降のハンドラすべてが実行されなくなる。

このため、 本ハンドラの使用例 に記載のとおり、 リクエストハンドラエントリ と組み合わせて使用する必要がある。