はじめに
「Apache Struts」(以下、Struts)とは、サーバサイドJava開発のデファクトスタンダードとしてあまりにも有名な、オープンソースのWebアプリケーション・フレームワークです。本連載では、そのStrutsの次世代バージョンであるStruts 2を、実際に動作するアプリケーションと共に解説していきます。
第5回目の本稿は、MVCモデルで言うところの「V」iewレイヤーについて説明することにします。Viewレイヤーとは、アプリケーションの処理結果を表示するレイヤーにあたります。
対象読者
サーバサイドJava(JSP&サーブレット)について基本的なことは理解している方を対象とします。
Result処理
Struts 2のViewは、URIリクエストから実行されたActionクラスの処理結果や状態を出力するレイヤーです。デフォルトでは、JSPファイルをテンプレートとして、HTMLが生成されます。またHTMLだけでなく、プレーンなテキストであったり、画像データなどのバイナリデータを指定することもできます。
今までの連載記事のなかでも、Actionの処理結果に応じた出力の指定について、たびたび言及していましたが、ここで整理してみることにします。

Result Type
ちょっとこれまでのサンプルコードをふりかえってみましょう。URIリクエストから実行されるActionクラスのメソッドでは、処理結果を"success"などの文字列で返すようにしていました。この結果の文字列を受けて、どのような処理をさせるかは、struts.xml の<result>タグで設定しています。例えば次のように指定すると、結果が"success"のときにindex.jspを用いた出力となります。
<result name="success">/index.jsp</result>
実はこれは既定値を利用した書き方で、タグを省略しないで書くと、次のようになります。
<result name="success" type="dispatcher">
<param name="location">/index.jsp</param>
</result>
type属性で処理のタイプを指定し、<param>タグでその処理のパラメータを指定します。このtype属性で指定している"dispatcher"の実体は、struts-default.xmlにて設定されているorg.apache.struts2.dispatcher.ServletDispatcherResultクラスです。JSPファイルを解釈して、 HTMLを生成する処理を行います。
<result>タグのtype属性(Result Type)を変更することで、処理を切り替えることができます。Struts 2で用意されているResult Typeは次の表の通りです。これは、本連載の第3回目でも少しふれていますが、さらに詳しく見ていくことにしましょう。
| Result Type | 概要 | 種別 |
| chain | 別のActionクラスを呼び出す | 遷移 |
| redirect | 指定したURLにリダイレクトする | |
| redirectAction | 指定したActionにリダイレクトする | |
| dispatcher | JSPファイルをテンプレートとしてHTML を生成する(デフォルト) | データ生成 |
| freemarker | 汎用テンプレートエンジンのFreeMarkerを使用してHTMLを生成する | |
| velocity | 汎用テンプレートエンジンのVelocityを使用してHTMLを生成する | |
| xslt | XSLTを使用してHTML(XML)を生成する | |
| httpheader | HTTPのステータスヘッダだけを生成する | |
| stream | バイナリデータをそのままクライアントに返す。ファイルのダウンロード等に利用する | |
| plainText | プレーンテキストとして、そのままクライアントに返す | |
| tiles | Tilesフレームワークを利用してHTMLを生成する | |
| jasper | オープンソースの帳票ライブラリJasperReport利用したレスポンスを生成する |
