0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📘 Vol.7:Struts2 における MVC モデルの全体像

Last updated at Posted at 2025-05-19

はじめに

Struts2 は、Java を用いた Web アプリケーション開発における定番の MVC フレームワークのひとつです。

本章では、Struts2 フレームワークにおける MVC モデルの構成と、それぞれの役割・関係性を全体的に俯瞰して解説します。
これにより、後続の「Model 偏」「View 偏」「Controller 偏」の章にスムーズに入っていけるようにすることが目的です。


MVCモデルとは?

まず、MVC とは次の3つの役割にアプリケーションを分離して設計するアーキテクチャパターンのことです:

略称 役割 説明
Model モデル アプリケーションの「データ」や「ビジネスロジック」を担当します。例:JavaBeans、DAOなど
View ビュー ユーザーに見える「画面」を担当します。Struts2では主にJSP + タグライブラリで構成されます
Controller コントローラー ユーザーのリクエスト処理の振り分けを行います。Struts2ではActionクラスがこの役割を担います
  • Model
    データの管理や業務ロジックを担当し、データベースアクセス(DAO)やJavaBeansを含みます。

Model層では、データベースとのやりとりを担うDAOや、データ構造を保持するJavaBeansが利用されます。

👉 JavaBeansは、プロパティ(データ)に対してgetter/setterを使ってアクセスするシンプルなJavaオブジェクトのことです。
例えばユーザー情報や掲示板のスレッド情報などを保持するクラスが該当します。


  • Controller
    Controller 層では、リクエストを受け取る Action クラスが配置されます。

👉 Struts2 の Action クラスは POJO(Plain Old Java Object)として実装できるため、特別な継承やインターフェースの実装が不要です。これにより、柔軟でテストしやすい設計が可能になります。

※この POJO 特性は、Spring Framework などと比較される際にも Struts2 の特徴のひとつとして挙げられます。


Struts2 における MVC の全体構成

Struts2 フレームワークでは、それぞれの要素が次のような形で構成され、連携しています

以下は、Struts2 における MVC モデルの処理フロー図です:

MVCアーキテクチャ図.png

この図は、Struts2 における典型的なリクエスト〜レスポンスの流れを表しています。各レイヤーの責務を理解することで、今後の開発がよりスムーズになります。


Struts2 のリクエスト処理フロー(簡略版)

Struts2 フレームワークでは、次のような順序でリクエストが処理されます。

  1. ユーザーがブラウザで画面を操作
  2. Actionクラスが呼び出される(Controller)
  3. 必要に応じて Model(DAOやJavaBean)と連携してデータを取得・更新
  4. Actionクラスが処理結果を元にどのJSPを表示するかを決定
  5. JSP(View)がレンダリングされてユーザーにレスポンスが返る

Struts2 の特徴的なポイント

Struts2 の MVC モデルには、以下のような独自の特徴があります:

  • Controller が Action クラス単位で構成されている
    → 各 URL(例:/list.action)ごとに独立した Action クラスを設計できる。

  • View として JSP + Struts タグライブラリを使用
    s:iterators:property などのタグで、Action から渡されたデータを簡潔に画面表示可能。

  • Model は自由度が高い(DAO + JavaBeans、サービス層など設計方針により自由)

  • 設定ファイル(struts.xml)によって URL と Action の対応関係を柔軟に制御できる


補足:Struts2 と Servlet/JSP の違い

Struts2 の最大の利点は、従来の Servlet + JSP 直書きによる開発よりも、責務が分離されて保守性が高い点です。

観点 Servlet/JSP Struts2
画面ロジック JSP に直書き タグライブラリでシンプルに記述
リクエスト処理 doPost/doGet に集中 Action クラスごとに分割可能
データの受け渡し Request 属性で直接やりとり 自動的にプロパティへマッピング(OGNL)

▶️ 次回予告

Vol.7.2 では、「Model(モデル)」について深掘りしていきます。

  • DAO(Data Access Object)の役割とは?

  • JavaBeans でどうやってデータを受け渡すのか?

  • Model は Controller や View とどう連携するのか?

Struts2 における Model の実態を、実例を交えながら分かりやすく解説していきます!


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?