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.3:Struts2 における struts.xml の書き方と役割

0
Last updated at Posted at 2025-05-20

本記事では、Struts2 フレームワークにおいて中核を成す設定ファイル struts.xml の役割と構成、そして処理の流れについて詳しく解説します。


🧭 全体の処理の流れ(login.jsp を例に)

Struts2 アプリケーションでは、画面(JSP)から送信されたリクエストが struts.xml の設定に従って Action クラスにマッピングされ、そこでロジックが処理されます。

ここではログイン処理を例に、処理の始まりから終わりまでを順を追って見ていきます。


1️⃣ アプリケーション起動直後に最初に読み込まれるページ(web.xml)

<welcome-file-list>
  <welcome-file>login.jsp</welcome-file>
</welcome-file-list>
  • アプリ起動時、まずこの設定により login.jsp が呼び出されます。

  • web.xml はアプリケーションの起点を定義する デプロイメントディスクリプタ です。


2️⃣ ユーザーがログインフォームから情報を入力し、送信

<s:form action="login" method="post">
  <label>ユーザー名:</label>
  <s:textfield name="user.user_name" label="ログインID" />
  <br><br>
  <label>パスワード:</label>
  <s:password name="user.password" label="パスワード" />
  <br><br>
  <s:submit value="ログイン" />
</s:form>
  • action="login" により、login.action という URL に POST リクエストが送られます。

  • この時点ではまだ JSP 側しか見えていませんが、この action 名は Struts2 の struts.xml によって解釈されます。


3️⃣ Struts2 のエントリポイント:struts.xml

<action name="login"
  class="com.company.bulletinboard.action.login.LoginAction">
  <result name="login">/login.jsp</result>
  <result name="admin">/view/ManagementMenu.jsp</result>
  <result name="user">/view/userPortal.jsp</result>
  <result name="input">/login.jsp</result>
</action>
  • name="login" により、login.action のリクエストがこの <action> にマッチします。

  • class="LoginAction" が処理を担当します(Controller の役割)。

  • result name="○○" により、LoginAction の戻り値に応じて遷移先の JSP を切り替えます。

🔁 つまり、何がトリガーなのか?

Struts2 におけるトリガー(起点)は、JSP などで指定される の action 名です。
これが内部的には xxx.action という URL にマッピングされ、struts.xml の によって該当の Action クラスが呼ばれます。


📌 Struts2 の処理フロー図(簡略)

Webブラウザ
    ↓ ①アクセス
web.xml
    ↓ ②login.jsp 表示
login.jsp の <s:form action="login">
    ↓ ③POST: login.action
StrutsPrepareAndExecuteFilter(内部)
    ↓
struts.xml の <action name="login">
    ↓
LoginAction(BaseAction 継承)
    ↓ ④mainProc() 実行 → 戻り値で遷移
    ↓
結果に応じて JSP 表示

🛠 struts.xml の役割まとめ

項目 説明
<action name="~"> JSP の action 属性と対応するリクエスト名
class="~" 対応する Action クラス(Controller)
<result name="~"> Action の戻り値に応じた遷移先の JSP
input バリデーションエラー時の戻り先(自動で処理される)

📎 関連リンク
🔄 Vol.7.2:Struts2 における Controller(コントローラ)の責務
https://qiita.com/juehara-crypto/items/06b4f9296a296db8f4ba

🧱 Vol.5:共通処理クラス(BaseAction)の設計と活用
https://qiita.com/juehara-crypto/items/a5f244a5f58597f33d06

💻 GitHub ソースコードはこちら
https://github.com/juehara-crypto/Portfolio_Bulletinboard/tree/master/03.%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0/Bulletinboard/src/main/java/com/company/bulletinboard/action


🧩 次回予告(Vol.7.4)

📘 Vol.7.4:struts.xmlの高度な設定と実践活用(Struts2)


🧭 Vol.1〜7 関連リンク

タイトル 主な内容
Vol.1 プログラミングとの再会 – 「画面ありき」で変わった学び方 プログラミング再入門と、画面駆動の学習法というユニークなアプローチの紹介。最初に「画面」から考えることでモチベーションを継続。
Vol.2 画面駆動設計に基づく設計書の具体例:画面フローからUI設計・処理定義まで 実際に描いた画面遷移図・UI設計・処理定義書を公開し、画面中心の設計手法を解説。
Vol.3 詳細設計編:ER図で見るデータ構造と実装の土台 実装前提で設計された ER図(Entity Relationship 図) をもとに、データ構造と整合性を設計。
Vol.4 Struts2とMavenの基礎と設定ファイルの役割 Struts2の構成とMavenでの管理、web.xmlpom.xml の役割を丁寧に解説。
Vol.5 環境構築編:掲示板アプリケーションの実行準備 TomcatとEclipseでの動作環境構築。
Vol.6 BaseActionクラスの詳細解説【Struts2の要】 すべてのアクションに共通する基底クラス BaseAction を定義し、ログ出力や共通処理を集約。
Vol.6.1 BaseAction の活用例【共通基底クラスでセッション管理を簡素化】 BaseAction を継承する具体的なアクション例を紹介し、セッションやログ処理の統合例を実践。
Vol.7 Struts2 における MVC モデルの全体像 Model-View-Controller の各要素が Struts2 でどう分担されるかを体系的に解説。
Vol.7.1 Struts2 における Model(モデル)について JavaBeansベースのModelクラス(User, Thread, Post など)設計とその役割を明確化。
Vol.7.2 Struts2 における Controller(コントローラ)の責務 Actionクラスを軸に、入力処理・分岐処理・画面遷移の中核を担うControllerの実装指針を提示。
Vol.7.4 struts.xmlの高度な設定と実践活用(Struts2) namespaceの活用や画面単位での分離設計、開発時の保守性向上テクニックを紹介。

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?