Struts を使用して作成すると、複雑な Web アプリケーションでも保守がしやすくなります。 Struts を使用すると、拡張やデバッグが容易になり、構造が分かりやすくなります。
Struts の最も重要な部分は MVC スタイルのコントローラーで、モデルおよびビューを提供する他のテクノロジーと統合されます。 モデルについては、Struts は JDBC や EJB などの標準データ・アクセス・テクノロジー、および Hibernate、iBATIS、Object Relational Bridge などの多数のサード・パーティー・パッケージと相互作用します。 ビューについては、Struts は JSP Standard Tag Library (JSTL) および JavaServer Faces (JSF) を含む JSP だけでなく、Velocity Templates、XSLT などのプレゼンテーション・システムともよく協調して機能します。
http://struts.apache.org/struts/index.html
以下のセクションでは、Model/View/Controller の設計パターンおよび Struts テクノロジーについて説明します。
J2EE アプリケーション・プログラミングでは Model 2 の別名でも知られる Model/View/Controller (MVC) の設計パターン (model-view-controller design pattern) は、プログラミング向けの設計パターンとして定評があります。 テーブル 1 に、MVC の 3 つのメイン・コンポーネントを要約します。
目的 | 説明 | |
---|---|---|
モデル | データの保守 | ビジネス・ロジックと 1 つ以上のデータ・ソース (リレーショナル・データベースなど)。 |
ビュー | データの全体または一部の表示 | モデルに関する情報をユーザーに表示するユーザー・インターフェース。 |
コントローラー | モデルまたはビューに影響するイベントの処理 | ユーザーがアプリケーションと対話するためのフロー制御機構手段。 |
Model 1 アーキテクチャーと Model 2 アーキテクチャーは、いずれもコンテンツの生成 (ビジネス・ロジック) をコンテンツの表示 (HTML フォーマット設定) から分離します。 Model 2 は、要求処理の大半が実行される場所が Model 1 と異なります。つまり、JSP ページ内ではなく、コントローラーによって処理が実行されます。
図 1 に示すように、JSP Model 1 アーキテクチャーでは、着信要求の処理とクライアントへの応答が JSP ページだけで行われます。
この 3 層アーキテクチャーでは、JSP ページおよび JavaBean がアプリケーション・サーバーに、データ・ストアおよびビジネス・ロジックがデータ・サーバーにあります。
図 2 に示すように、JSP Model 2 アーキテクチャーでは、サーブレットが要求を処理し、JSP ファイルで使用される Bean またはオブジェクトを作成し、要求を転送します。
この 3 層アーキテクチャーでは、 サーブレットおよび JSP ページがアプリケーション・サーバーに、 データ・ストアおよびビジネス・ロジックがデータ・サーバーにあります。
テーブル 2 は、Model 1 と Model 2 のどちらがより適切であるかを判断するための基準を示しています。
基準 | Model 1 | Model 2 |
---|---|---|
Web アプリケーションのタイプ | シンプル | 複雑 |
開発者による作業の種類 | 高速プロトタイピング | 変更および保守の対象となるアプリケーションの作成 |
作業の担当者 | ビューとコントローラーを同じチームで処理 | ビューとコントローラーを別のチームで処理 |
Struts における Model 2 の実装では、アクション・サーブレットと呼ばれる特定タイプのサーブレットと、1 つ以上のアクション、およびアクション・マッピングを使用して、コントローラーを実装します。 また、フォーム Bean と呼ばれる特定のタイプの Java Bean も使用します。 図 3 に示すように、実行時の Web サーバーには、Model 2 の Web アプリケーションのビュー・コンポーネントとコントローラー・コンポーネントの両方が含まれており、第 3 層 (通常は Web サーバーの外部にある) にはモデルが含まれています。
このダイアグラムは、 Model/View/Controller 原理を使用して設計されたアプリケーションの構造を示しています。
テーブル 3 は、MVC コンポーネントへの Struts の寄与を示しています。
コンポーネント | 寄与 |
---|---|
モデル | 直接提供なし。 ただし、Struts のアクションと構成ファイルは、モデル・コンポーネントが呼び出されるような状況を制御する的確な方法を提供します。 |
ビュー |
|
コントローラー |
|
動的 Web アプリケーションの 開発に対する Model/View/Controller 分割には、複数の利点があります。
プログラム自体の作業以外に必要となるのは、構成ファイルまたはネーム・サーバー・コンテンツの調整のみです。 他のソース・コードの調整は不要です。