Strutsとは?
Struts(ストラッツ)はJavaベースのWebアプリケーションフレームワークです。Apache Software Foundationが開発しており、MVC(Model-View-Controller)アーキテクチャに基づいています。
📝 Strutsのバージョンに注意: 現在、Struts 1とStruts 2があります。このチートシートではStruts 2を中心に解説します。
MVCアーキテクチャ
Model
View
Controller
- Model(モデル): ビジネスロジックとデータを表現
- View(ビュー): ユーザーインターフェースを表現(JSP, Velocity, FreeMarkerなど)
- Controller(コントローラ): リクエストを受け取り、処理を振り分け
主要コンポーネント
Action クラス
コントローラーの中心的な役割を担うクラス。リクエストを受け取って処理し、適切な結果を返します。
public class HelloWorldAction extends ActionSupport {
private String message;
public String execute() {
message = "Hello, Struts 2!";
return SUCCESS;
}
// getters and setters
}
設定ファイル
struts.xml
Struts 2の主要設定ファイル。アクションとビューのマッピングを定義します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="hello"
class="com.example.HelloWorldAction">
<result name="success">hello.jsp</result>
</action>
</package>
</struts>
web.xml
Webアプリケーションの設定ファイル。Strutsフィルターを設定します。
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
リクエスト処理の流れ
1
ブラウザからリクエストが送信される
2
StrutsPrepareAndExecuteFilterがリクエストを処理
3
ActionMapperがURLからアクションを特定
4
対応するActionクラスのexecuteメソッドが実行される
5
結果に基づいて適切なビュー(JSPなど)が表示される
よく使うStruts 2タグ
タグ | 説明 |
---|---|
s:property | ActionクラスのプロパティやValueStackの値を表示 |
s:form | HTMLフォームを生成 |
s:textfield | テキスト入力フィールドを生成 |
s:submit | 送信ボタンを生成 |
s:iterator | コレクションをループして処理 |
s:if | 条件分岐 |
タグの使用例
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>Struts 2 Example</title></head>
<body>
<h1><s:property value="message" /></h1>
<s:form action="login">
<s:textfield name="username" label="ユーザー名" />
<s:password name="password" label="パスワード" />
<s:submit value="ログイン" />
</s:form>
</body>
</html>
Tips&ベストプラクティス
- 命名規則を守る: アクション名はXxxActionとする
- 入力検証: ValidationAwareを実装またはActionSupportを継承して入力検証を行う
- 国際化対応: リソースバンドルを使用して複数言語対応
- 例外処理: global-exceptionsを定義して一元管理
- インターセプター活用: 共通処理はインターセプターに切り出す
🔍 デバッグTips: struts.devMode=true
を設定ファイルに追加すると、詳細なエラー情報が表示されます。本番環境では必ずオフにしましょう。
注意点
Struts 2はパワフルなフレームワークですが、いくつか注意点があります:
- セキュリティ更新を確認: 常に最新バージョンを使用
- 設定が複雑: XMLベースの設定は記述量が多い
- 学習曲線: 初心者には少し学習コストが高い
- Spring Bootとの比較: 最近のプロジェクトではより軽量なフレームワークも検討