タイトル: Struts
StrutsとはApache Software Foundationによって開発されているOSSのWebアプリケーションフレームワーク。
MVCアーキテクチャを採用しておりActionServletやJSP等で構築される。
2013年にサポートが終了している。
Strutsの位置づけと現状
- Struts 1: 2000年代初頭〜中盤に普及。2013年4月にEOL(End Of Life)
- Struts 2: アーキテクチャを刷新した別物。現在もメンテナンスされているが、Spring 系に置き換えられているケースが多い
- 新規開発: Spring Framework(Spring Boot)が事実上の標準
- 既存システムの保守として現在も現役。年金・行政・金融系などで残存
本ページの子ページ一覧
| 項目 | 内容 |
|---|---|
| 導入方法 | StrutsプロジェクトのEclipse/Tomcatへの組み込み |
| struts-config.xmlの説明 | アクション・フォーム定義の設定ファイル |
| ActionForm | 画面入力値を保持するJavaBeans |
| Action | リクエスト処理の本体。execute()を実装 |
| エラー一覧 | Struts特有のエラーへの対処 |
| JSPタグ | html:form, logic:iterate 等の標準タグ |
| カスタムタグ(taglib) | 独自タグライブラリの定義方法 |
Strutsの基本構造(MVC)
| 要素 | 役割 |
|---|---|
| Model (DAO等) | ビジネスロジック、データアクセス |
| View (JSP) | 画面表示 |
| Controller (ActionServlet) | リクエストを Action に振り分け |
| ActionForm | 入力値の保持 |
| Action | 処理本体(execute()) |
| struts-config.xml | URLとAction/JSPのマッピング定義 |
典型的なリクエスト処理の流れ
- ユーザーがフォーム送信
ActionServletがリクエストを受信struts-config.xmlを参照して該当Actionを特定- 入力値を
ActionFormに詰める(必要なら自動バリデーション) Action.execute()が処理を実行- 戻り値の
ActionForwardが示すJSPに遷移
注意点(保守時の前提)
- セキュリティ更新が出ない: Struts 1 はEOL済みで脆弱性が修正されない。本番運用ではフロントにWAFを置くなど別レイヤで防御する
- Struts 2 の脆弱性: 過去にOGNL式評価による重大な脆弱性(2017年のEquifax事件など)があった。最新パッチを必ず当てる
- 新規機能は Spring へ: 同居させる場合は Spring DispatcherServlet を別パスにマッピングして共存させるパターンが現実的
関連
- 親カテゴリ: フレームワーク (Java)
- 代替の主流: Spring Framework
- 関連: JSP / Servlet(サーブレット)