Struts はオープン・ソース・ソフトウェアのフレームワークの 1 つで、これを使用すると、Web アプリケーションを迅速かつ容易に構築できます。 このフレームワークは、Java Bean、Java サーブレット、JavaServer Page (JSP)、XML などの標準テクノロジーを利用します。 Struts は、Model 2 のアプローチに基づいたアプリケーション・アーキテクチャーを推進します。これは、Model/View/Controller (MVC) のデザイン・パターンと基本的に同じです。
Struts を使用して作成すると、複雑な Web アプリケーションでも保守がしやすくなります。 アプリケーションは、デバッグや拡張が容易になり、より分かりやすいものとなります。
Struts の最も重要な部分は MVC スタイルのコントローラーで、モデルおよびビューを提供する他のテクノロジーと統合されます。 モデルについては、Struts は JDBC や EJB などの標準データ・アクセス・テクノロジー、および Hibernate、iBATIS、Object Relational Bridge などの多数のサード・パーティー・パッケージと相互作用します。 ビューについては、Struts は JSP Standard Tag Library (JSTL) および JavaServer Faces (JSF) を含む JSP だけでなく、Velocity Templates、XSLT などのプレゼンテーション・システムともよく協調して機能します。
http://jakarta.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 ページだけで行われます。
図 2 に示すように、JSP Model 2 アーキテクチャーでは、サーブレットが要求を処理し、JSP ファイルで使用される Bean またはオブジェクトを作成し、要求を転送します。
表 2 は、Model 1 と Model 2 のどちらがより適切であるかを判断するための基準を示しています。
基準 | Model 1 | Model 2 |
---|---|---|
Web アプリケーションのタイプ | シンプル | 複雑 |
開発者の作業の種類 | 高速プロトタイピング | 変更および保守の対象となるアプリケーションの作成 |
作業の担当者 | ビューとコントローラーを同じチームで処理 | ビューとコントローラーを別のチームで処理 |
Struts における Model 2 の実装では、アクション・サーブレットと呼ばれる特定タイプのサーブレットと、1 つ以上のアクション、およびアクション・マッピングを使用して、コントローラーを実装します。 さらに、フォーム Beanと呼ばれる特定のタイプの Java Bean を使用します。 図 3 に示すように、実行時の Web サーバーには、Model 2 の Web アプリケーションのビュー・コンポーネントとコントローラー・コンポーネントの両方が含まれており、第 3 層 (通常は Web サーバーの外部にある) にはモデルが含まれています。
表 3 は、MVC コンポーネントへの Struts の寄与を示しています。
コンポーネント | 寄与 |
---|---|
モデル | 直接提供なし。 ただし、Struts のアクションと構成ファイルは、モデル・コンポーネントが呼び出されるような状況を制御する的確な方法を提供します。 |
ビュー |
|
コントローラー |
|
動的 Web アプリケーションの 開発に対する Model/View/Controller 分割には、複数の利点があります。
プログラム自体の作業以外に必要となるのは、構成ファイルまたはネーム・サーバー・コンテンツの調整のみです。 他のソース・コードの調整は不要です。