SHOEISHA iD

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

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

japan.internet.com翻訳記事

Struts 1/Struts 2 Webアプリケーションフレームワークの比較

同じアプリケーションを元にStrutsの進化を知る

ダウンロード サンプルソース (27.5 KB)

Struts 1のチュートリアル 1

 前述のように、本稿ではStruts 1とStruts 2の違いを示すために、Struts 1フレームワークとStruts 2フレームワークで同じアプリケーションを作成する場合に使用されるコードを比較します。したがって、Struts 1を一通り理解していることが前提です。作成するアプリケーションの名前は「defect-tracker」です。このアプリケーションでは、ユーザーがアプリケーションの不具合(defect)を記録し、開発者がその不具合の解決策を記録します。アプリケーション自体は、最も基本的な要件から成る単純なものですが、ほぼすべてのWebアプリケーションに共通する基本的な機能を十分に扱うことができます。

 Struts 1アプリケーションを開始するにあたって、最初に必要なファイルは「web.xml」構成ファイルです。Struts 1用に「web.xml」ファイルを変更して、アプリケーションURI要求をStrutsコントローラにルーティングできるようにする必要があります。

<servlet>
   <servlet-name>action</servlet-name>
   <servlet-class>org.apache.struts.action.ActionServlet
      </servlet-class>
   <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
   </init-param>
   <load-on-startup>2</load-on-startup>
</servlet>


<!--Map Struts-related request to action-->
<servlet-mapping>
   <servlet-name>action</servlet-name>
   <url-pattern>*.do</url-pattern>
</servlet-mapping>

 Struts ActionServletは、パターン「*.do」に一致するURI要求を受け取ります。ActionServletは「struts-config.xml」構成ファイルの定義に従い、この要求にマップされているStruts Actionを検索します。ActionServletオブジェクトとActionオブジェクトは、StrutsアプリケーションのMVCアーキテクチャの「コントローラ」の部分に相当します。Struts Actionと「ビュー」(通常はJSPとして実装)との間でデータをやり取りするには、StrutsではActionFormオブジェクトを使用します。ActionFormオブジェクトは「モデル」に相当します。

 ユーザーがフォームを送信すると、ActionFormとそのデータがActionのexecuteメソッドに渡されます。Actionはデータを検証し、必要なビジネスロジックを起動します(ビジネスロジックは、Strutsをまったく意識しない別の層にカプセル化しておくことが理想です)。ビジネスロジックが実行されると、Actionは、1つまたは複数のActionForwardオブジェクトで指定されているビューに制御を移します(これらのActionForwardオブジェクトも「struts-config.xml」で構成されています)。ActionForwardのエントリは、Actionの予想される結果を表します。これらは、Actionごとに定義することも、すべてのActionに適用されるように全体で定義することもできます。

 「struts-config.xml」ファイルの一部を以下に示します。defect-trackerアプリケーションには、ActionとActionFormのセットが2つあります。1つ目は既存の不具合エントリのリストを扱うもので、2つ目は不具合データの操作(いわゆる「CRUD(Create-Update-Delete)」)を扱うものです。

struts-config.xml

<global-forwards>
   <forward name="list" path="/list.do"/>
</global-forwards>

<form-beans>
   <form-bean name="listForm" type="web.DefectsListForm" />
   <form-bean name="actionForm" type="web.DefectsActionForm" />
</form-beans>

<action-mappings>
   <action
      path="/list"
      name="listForm"
      scope="request"
      type="web.DefectsList"
      validate="false">
      <forward name="list" path="/pages/defects.jsp" />
   </action>
   <action
      path="/action"
      name="actionForm"
      scope="request"
      type="web.DefectsAction"
      parameter="method"
      validate="false">
      <forward name="edit" path="/pages/editDefect.jsp" />
      <forward name="add" path="/pages/addDefect.jsp" />
      <forward name="list" path="/list.do" redirect="true" />
   </action>
</action-mappings>

 「struts-config.xml」内の最後の2つのエントリでは、アプリケーションのメッセージとラベルを表示するプロパティファイルに加えて、アプリケーション内のActionFormオブジェクトの検証ルールを追加するために使用する別の構成ファイルを宣言しています。

 defect-trackerアプリケーションには、Defectという1つのドメインオブジェクトがあり、これがシステムの不具合エントリを表します。起動時に、ユーザーは「list.do」にリダイレクトされます。このファイルは、不具合エントリのリストを取得するDefectsList Actionオブジェクトのexecuteメソッドにマップされています。

DefectsListのexecuteメソッド

public ActionForward execute(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response) {
   DefectsListForm defectsListForm = (DefectsListForm) form;

   //Get data from business layer and assign it to the form
   //object...
   //...

   return mapping.findForward("list");
}

 executeメソッドはアプリケーションデータを取得し、ActionForm DefectsListingActionFormクラスのsetDefects()メソッドを使用して、そのデータをDefectインスタンスのコレクションに割り当てます。

DefectsListFormのDefectsプロパティ

   private List defects;

   public List getDefects() {
      return defects;
   }

   public void setDefects(List defects) {
      this.defects = defects;
   }

 「defects.jsp」ファイルは、Struts 1タグライブラリを使用してこれらの不具合エントリを表示し、「struts-config.xml」で宣言した「.properties」ファイルからラベルとメッセージを表示します。

次のページ
Struts 1のチュートリアル 2

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

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

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

Michael Klaene(Michael Klaene)

Sogeti USAの主任コンサルタント。IT関連で10年以上の経験があり、J2EE、.NET、Oracleの設計と開発が専門。

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1959 2008/01/18 17:15

イベント

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

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

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

メールバックナンバー