作りながら学ぶJavaアプリケーションフレームワーク (5)
WINGSプロジェクト 高江 賢 [著] 山田 祥寛 [監修] 2009/03/04 14:00

サンプルファイル 3438.48 KB

 Struts 2入門 第5回の本稿は、MVCモデルで言うところの「V」iewレイヤーについて説明します。Viewレイヤーとは、アプリケーションの処理結果を表示するレイヤーにあたります。

1 2 3 4 →

はじめに

 「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一覧
Result Type概要種別
chain別のActionクラスを呼び出す遷移
redirect指定したURLにリダイレクトする
redirectAction指定したActionにリダイレクトする
dispatcherJSPファイルをテンプレートとしてHTML を生成する(デフォルトデータ生成
freemarker汎用テンプレートエンジンのFreeMarkerを使用してHTMLを生成する
velocity汎用テンプレートエンジンのVelocityを使用してHTMLを生成する
xsltXSLTを使用してHTML(XML)を生成する
httpheaderHTTPのステータスヘッダだけを生成する
streamバイナリデータをそのままクライアントに返す。ファイルのダウンロード等に利用する
plainTextプレーンテキストとして、そのままクライアントに返す
tilesTilesフレームワークを利用してHTMLを生成する
jasperオープンソースの帳票ライブラリJasperReport利用したレスポンスを生成する

1 2 3 4
→
INDEX
Struts 2入門(5)~Viewレイヤーの仕組み~
Page1
はじめに
対象読者
Result処理
Struts Tag
今回のサンプルコード
まとめ
参考資料
プロフィール
WINGSプロジェクト 高江 賢 タカエ ケン

WINGSプロジェクトについて>
有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2011年7月時点での登録メンバは36名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。


プロフィール
山田 祥寛 ヤマダ ヨシヒロ

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。
主な著書に「入門シリーズ(サーバサイドAjax/XMLDB/PEAR/Smarty)」「独習シリーズ(ASP.NET/PHP)」「10日でおぼえる入門教室シリーズ(ASP.NET/PHP/Jakarta/JSP&サーブレット/XML)」「Pocket詳解辞典シリーズ(ASP.NET/PHP/Perl&CGI)」「今日からつかえるシリーズ(PHP/JSP&サーブレット/XML/ASP)」「書き込み式 SQLのドリル」他、著書多数


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト