SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

作りながら学ぶJavaアプリケーションフレームワーク

Struts 2入門(5)~Viewレイヤーの仕組み~

作りながら学ぶJavaアプリケーションフレームワーク (5)

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 「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にリダイレクトする
dispatcher JSPファイルをテンプレートとしてHTML を生成する(デフォルト データ生成
freemarker 汎用テンプレートエンジンのFreeMarkerを使用してHTMLを生成する
velocity 汎用テンプレートエンジンのVelocityを使用してHTMLを生成する
xslt XSLTを使用してHTML(XML)を生成する
httpheader HTTPのステータスヘッダだけを生成する
stream バイナリデータをそのままクライアントに返す。ファイルのダウンロード等に利用する
plainText プレーンテキストとして、そのままクライアントに返す
tiles Tilesフレームワークを利用してHTMLを生成する
jasper オープンソースの帳票ライブラリJasperReport利用したレスポンスを生成する

次のページ
chainとリダイレクトとの違い

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
作りながら学ぶJavaアプリケーションフレームワーク連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 高江 賢(タカエ ケン)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3565 2009/03/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング