ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
struts-config.xml の役割
Struts 1 は MVC フレームワークで、リクエスト → Action → JSP の流れを struts-config.xml で宣言的に定義します。Struts 2 とは構成が大きく異なるので注意(こちらは struts.xml)。
Struts 1 のサポートは2013 年で終了しており、セキュリティ脆弱性も多数。新規開発では使わず、既存システムの保守用に必要な範囲で理解します。
全体構造
...
各要素の役割
① form-beans(フォーム Bean)
HTML フォームのデータを受け取るクラス:
// com.example.UserForm.java
public class UserForm extends ActionForm {
private String name;
private String email;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (name == null || name.isEmpty()) {
errors.add("name", new ActionMessage("error.name.required"));
}
return errors;
}
}
② action-mappings(Action 定義)
URL → Action(コントローラ)の紐付け:
| 属性 | 意味 |
|---|---|
path | リクエストパス(/login) |
type | Action クラスの FQDN |
name | 使用する form-bean 名 |
scope | request / session |
validate | true なら form-bean の validate() を呼ぶ |
input | validate 失敗時の戻り先 |
parameter | DispatchAction 等で使うメソッド名指定 |
// com.example.UserSaveAction.java
public class UserSaveAction extends Action {
@Override
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
UserForm userForm = (UserForm) form;
try {
userService.save(userForm.getName(), userForm.getEmail());
return mapping.findForward("success");
} catch (Exception e) {
return mapping.findForward("failure");
}
}
}
③ forward(遷移先)
名前と JSP パスの対応:
④ message-resources(メッセージ)
error.name.required=名前は必須です
welcome.message=ようこそ、{0} さん
典型的なリクエストの流れ
- ユーザが
/login.doにアクセス - ActionServlet がリクエストを受信
- struts-config.xml の action-mappings から
/loginを検索 - form-bean
loginFormを生成してパラメータをバインド validate=trueなら form の validate() メソッド呼び出し- エラーあり → input 属性の JSP に戻る
- エラーなし → Action クラスの
execute()実行 - execute() が ActionForward を返す(例: success)
- 該当する forward の path(JSP)に遷移
Struts 1 vs Spring MVC(モダン)
| 項目 | Struts 1 | Spring MVC |
|---|---|---|
| 設定 | XML 中心 | アノテーション中心 |
| コントローラ | Action クラス | @Controller / @RestController |
| フォームバインド | ActionForm 継承 | POJO + @ModelAttribute |
| バリデーション | validate() メソッド | Bean Validation (@Valid) |
| テスト | 困難 | 容易(POJO ベース) |
| DI | 限定的 | 強力 |
| サポート | 2013 終了 | アクティブ |
レガシー保守の注意点
- セキュリティパッチ: Struts 1 は提供されない。脆弱性報告(CVE)を確認
- Java バージョン: Struts 1 は古い Java 向けで、Java 17+ では動作しない場合あり
- 移行計画: Spring MVC / Spring Boot へのリプレースを段階的に
- テスト不足: 単体テストが書きづらい設計、リファクタリング前にテスト追加
関連記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
同階層のページ
- 導入方法
- struts-config.xmlの説明
- ActionForm
- Action
- エラー一覧
- JSP タグ
- カスタムタグ(tablib)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?