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.4:struts.xmlの高度な設定と実践活用(Struts2)

Last updated at Posted at 2025-05-20

Struts2プロジェクトにおけるstruts.xmlは、単なる画面遷移の定義ファイルにとどまらず、アプリケーション全体の振る舞いを制御する「核」とも言える存在です。

この回では、以下の内容に踏み込み、実用的な構成の理解を深めていきます。

🔸 本記事の内容

  • struts.xmlの構成と役割(復習)

  • <package> の意味と用途

  • <interceptors> と共通処理の活用

  • 🔹 独自Interceptorの定義(実践では BaseAction に集約)

  • 実際の struts.xml 全体例(本プロジェクトより抜粋)


✅ struts.xml の構成(おさらい)

以下は典型的な構成例です。

<struts>
    <constant name="struts.devMode" value="false" />
    <package name="default" extends="struts-default">
        <action name="login" class="com.example.LoginAction">
            <result name="success">/home.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

このように、Struts2では <package> 配下に <action> をまとめ、共通の遷移制御・エラー処理などを定義していきます。


🔹 <package> の役割

  • アクションのグループ化
    各機能単位(例:ユーザー管理、掲示板管理)でアクションをまとめることができます。

  • 共通設定の継承
    extends="struts-default" により、デフォルトの設定(エラーハンドリング、バリデーションなど)を活用できます。

  • namespace指定も可能
    namespace="/admin" といった形でURLの階層構造を整理することも可能です。


🔹 <interceptors> と共通処理

Struts2では、アクションが呼び出される前後に 共通処理(Interceptor) を差し込むことができます。

例:struts-default に含まれるInterceptorスタック

<default-interceptor-ref name="defaultStack" />

これにより、以下のような機能が自動的に適用されます:

  • パラメータの自動バインディング

  • バリデーション

  • ファイルアップロード

  • ログインチェック(自作可能)


🔹 独自Interceptorの定義(プロジェクトでは BaseAction で共通化)

Struts2では <interceptor> を自作して、以下のような機能を差し込むことができます:

  • セッションユーザーの有無チェック

  • 権限ロールの検査

  • 処理前後の共通ログ出力

ただし、本プロジェクトでは アクションの共通基底クラス BaseAction にロジックを統合 することで、Interceptorに相当する共通処理を簡潔に実装しています。

BaseActionの特徴

  • ServletRequest/Response取得

  • ログインセッションの検証

  • メッセージ制御(例:「キャンセルがクリックされました」など)

📦 実際の struts.xml 全体例(本プロジェクトより)

以下は、GitHubリポジトリ で使用している構成例からの抜粋です。

<package name="default" extends="struts-default">
    <!-- ログイン -->
    <action name="login" class="com.company.bulletinboard.action.LoginAction">
        <result name="success">/view/userPortal.jsp</result>
        <result name="error">/view/error.jsp</result>
    </action>

    <!-- ログアウト -->
    <action name="logout" class="com.company.bulletinboard.action.LogoutAction">
        <result name="success">/view/LoginScreen.jsp</result>
    </action>

    <!-- 掲示板管理画面 -->
    <action name="list" class="com.company.bulletinboard.action.ListAction">
        <result name="success">/view/BulletinboardManagementScreen.jsp</result>
    </action>

    <!-- その他、キャンセル・作成・編集など多様なアクション定義 -->
</package>

📌 詳細全体はGitHubで閲覧可能です:
🔗 struts.xml を見る


✍️ まとめ

  • struts.xmlアクション定義画面遷移制御 の中心

  • <package> を使って整理することで拡張性UP

  • Interceptorに頼らず BaseActionで共通処理 をまとめるアプローチも有効


▶️ 次回予告(Vol.7.5)

次回は以下を予定しています:

  • JSP側の <s:form> やOGNL式の活用

  • 入力チェックとエラー表示のバリデーション機構

  • fieldErrors の利用パターン


ご意見・ご質問はコメントでお寄せください!✨

🔗 Vol.7.3:struts.xml の基本構成と用途 もあわせてどうぞ!

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?