✅ 本記事の目的
Struts2アプリケーションの心臓部ともいえる設定ファイル struts.xml
。
本記事では、次のような構成を軸に、実践的な視点から struts.xml
の全容を整理します。
-
package
、action
、result
とは? - どうやって複数画面・複数処理に対応するのか?
- 実務での定義例、運用Tips
📘 基本構成のおさらい
Struts2の設定ファイル struts.xml
の基本構成は以下のようになります。
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="com.example.LoginAction">
<result name="success">/view/UserPortal.jsp</result>
<result name="error">/view/Login.jsp</result>
</action>
</package>
</struts>
各要素の意味については後述します。
🧩 1. package要素:処理のグループ単位
✔ 役割
-
action
要素をグルーピングする単位 -
namespace
やextends
により共通設定やURL階層の整理が可能
✅ よくある設定例
<package name="admin" namespace="/admin" extends="struts-default">
-
/admin/login.action
のようなURLで呼び出せる -
admin
専用のアクション群を定義できる
🧩 2. action要素:1画面=1アクション
✔ 役割
- 画面遷移や処理単位の定義
-
name
(呼び出し名)とclass
(処理を記述したJavaクラス)を紐付け
<action name="createUser" class="com.example.CreateUserAction">
-
createUser.action
というURLで呼び出される - 成功/失敗時の遷移先を
result
で定義
🧩 3. result要素:遷移先のJSPを明示
✔ 役割
- アクションの戻り値(例:
success
)に応じた遷移先を定義 -
.jsp
やリダイレクトなど柔軟な構成が可能
<result name="success">/view/UserPortal.jsp</result>
<result name="error" type="redirect">/view/Login.jsp</result>
🧠 Tips:複数画面・処理に対応する設計
- 1つの
package
に複数のaction
を含めることで機能単位に整理可能 -
namespace
でフロントと管理画面を分離 -
result
名は共通(例:success
)でも画面ごとに遷移先を切り替え可能
🏁 まとめ:設定ファイルを制する者はStruts2を制す!
要素 | 目的 | 代表的な属性 |
---|---|---|
package |
アクションのグルーピング |
name , namespace , extends
|
action |
処理単位(画面・機能) |
name , class
|
result |
遷移先の画面やURL定義 |
name , type
|
🔗 次回予告
Vol.11.6では、resultのtype
オプションにフォーカスし、
redirect
, dispatcher
, chain
などの違いと活用術を徹底解説します。
🧭 関連記事(Vol.11.xxxシリーズ)
連番 | タイトル | 内容分類 |
---|---|---|
Vol.11.0 | Struts2が提供してくれる便利機能まとめ9選 | 導入&概要 |
Vol.11.1 | 自動注入とステートレスActionの仕組み | フレームワーク内部理解 |
Vol.11.2 | UX改善に効く!アクション層設計と入力制御の極意(プロローグ) | UX設計・アクション層総論 |
Vol.11.2.1 | 【実践編】Struts2アクション層の役割と設計パターン(Command型 / UIアクション分離など) | アクション設計パターン |
Vol.11.2.2 | 【UX重視】戻るボタン・キャンセル処理の設計手法と「戻り先管理」のスマート実装 | 戻り先制御とUX設計 |
Vol.11.2.3 | 【設計ノウハウ】多画面遷移時のパラメータ受け渡し・保持戦略(セッション vs hidden vs URL) | パラメータ多重管理 |
Vol.11.2.4 | 【実践ガイド】ユーザー操作を考慮したアクション遷移設計(リダイレクト vs フォワードの使い分け) | UX遷移設計/Result制御 |
Vol.11.2.5 | 【トラブル防止】アクション層の共通処理とメンテナブルなBaseAction設計 | アクション共通化/保守性 |
Vol.11.3 | Struts2の defaultStack とは?Interceptorの中身を詳しく追ってみる | Interceptor |
Vol.11.3.2 | 🔧 Vol.11.3.2 独自Interceptorの作り方と使い所 Struts2のカスタマイズを“実践で使えるレベル”に一歩進めよう | Interceptor |
Vol.11.4 | 入門者のための「パラメータ自動バインディング」完全理解ガイド | 自動バインディング |
Vol.Vol.11.4.1 | 入門者のための自動バインディング実践パターン集 | 自動バインディング |
Vol.11.5.1 | Struts2の“画面遷移の全体像”を理解するためのマイルストーン記事 | 設定ファイル構造 |
Vol.11.6 | ActionSupport の便利メソッドと国際化対応 | ユーティリティ / i18n |
Vol.11.7 | validate() / input 戦略とUX設計 | 開発スタイルの違い |
Vol.11.8 | アノテーションベースの設定 vs XML定義の比較 | 開発スタイルの違い |
Vol.11.9 | バリデーション完全解説(XML / アノテーション) | バリデーション(※Vol.8補完) |
Vol.11.10 | Struts2の「OGNL」ってなに?しくみと使い方をやさしく解説 | 式言語OGNL解説 |
Vol.11.11 | ModelDriven インターフェースの使いどころと注意点 | Model駆動開発 |
Vol.11.12 | SessionAware と RequestAware でセッション/リクエスト管理 | セッション管理 |
Vol.11.13 | Resultタイプ完全解説(dispatcher / redirect / stream など) | 遷移パターン理解 |
Vol.11.14 | Vol.11.14 ValueStackの中身を理解する – 画面とActionの橋渡し役 | Action |
Vol.11.15 | Interceptorチェーンを自作してみよう(ログ / 認証フィルタ) | Interceptor |
Vol.11.16 | エラー処理と例外ハンドリングの実践パターン | ハンドリング設計 |
Vol.11.17 | Struts2でファイルアップロード機能を実装する方法 | 実装系Tips |
Vol.11.18 | 非同期通信(AJAX)とStruts2の連携方法 | フロント連携編 |
Vol.11.19 | セキュリティ対策(CSRF, XSS, パラメータ偽装) | セキュリティ対策 |
Vol.11.20 | 複数フォームを安全に扱う!セッション管理と動的フォームの考え方 | セッション管理 |
Vol.11.21 | Struts2でJSONを返す!REST API連携と非同期通信の基本設計 | セッション管理 |
Vol.11.22 | 本番環境構成とセキュリティ設計(Apache+Tomcat+Struts2連携) | 外部公開 |