✴️

Struts(ストラッツ)とは?Strutsの基本

2024/02/01に公開

Struts(ストラッツ)とは

正式名称はApache Struts(アパッチ・ストラッツ)です。
StrutsはJavaでWebアプリケーションを開発するために使用されるオープンソースのフレームワークです。

Apache StrutsにはStruts1(以下「1系」)とStruts2(以下「2系」)があります。1系はJakarta Projectベースでしたが、2007年にリリースされたStruts2はWebWork2ベースに置き換えられました。1系と2系には互換性がありません。

Apache Strutsは脆弱性の報告があるため、新規のWebアプリケーション開発に用いられることはありませんが、過去にApache Strutsで開発されたシステムが現在も現役で動いていることはありえます。

SturutsのMVCモデル

StrutsではMVCモデルを採用しています。
MVCモデルはアプリケーションを次の3つに分けて設計、開発していく手法です。

MVCモデル

MVCモデルとはプログラムを、Model、View、Controllerの役割に分ける設計手法です。

モデル アプリケーションで取り扱うデータの管理及びデータに対するロジック
ビュー 画面等へのモデルの表示
コントローラ モデルとビューの制御

  • モデルは開発者が実装するJavaBeanもしくはEJB(Enterprise JavaBeans)、
  • ビューはJSPおよびStrutsのカスタムタグ、
  • コントローラはActionServletとRequestProcessor、Actionとなります。
  1. ユーザーからのリクエストは、まずActionServletはリクエストのURLから呼び出すモジュールを判断し、そのモジュールのRequestProcessorへリクエストを転送します。
  2. そしてRequestProcessorは、あらかじめ設定された内容に応じて実行するActionを決定し、Actionを介してモデルであるJavaBean(もしくはEJB)ロジックを実行します。
  3. モデルの処理が終了すると、RequestProcessorはActionを介して結果(どのJSPページを表示に使用)するかを取得します。
  4. ActionServletは取得した情報を、ビュー(JSP)にフォワードを行います。
  5. 遷移先のJSPでは、sessionやrequestスコープに登録されたJavaBeanからデータを取得し、表示を行います。
  6. ユーザは最終的にJSPページによって生成された結果をレスポンスとして取得します。

struts.config.xml

strutsではリスエストに対応する処理を設定ファイル(struts-config.xml)で管理しており、遷移先や実行処理を修正する際はstruts-config.xmlを修正すれば良いです。

そのため、struts-config.xmlの内容が理解できれば、どの画面に遷移するか、どの処理が実行されるがとても簡単に理解できるようになります。

Struts設定ファイルは、ActionServletが初期化されるタイミングと、ActionServletからRequestProcessorが起動されるタイミングに読み込まれ、その設定内容に応じてモジュールの準備が整えられます。

Struts設定ファイルに設定できる情報

  • URLと起動するActionの関連情報
  • Action実行後に使用されるリソ一スの情報
  • ActionFormの情報
  • メッセ一ジリソースの情報
<form-beans>
        <form-bean name="test_loginForm" type="test.LoginAction"></form-bean>
</form-beans>

<action-mappings>
    <action 
    path="/test/login" //項目1
    type="test.LoginAction" //項目2
    name="test_loginForm" //項目3
    scope="request"> //項目4

    <forward name="success" path="/WEB-INF/jsp/test/success.jsp"> //項目5
    </forward>
</action-mappings>
  1. <form action="../test.do" method="post" > と合わせる。
    test.doというリクエストが来た場合に呼び出されるアクションに関する定義。URLには項目1のパス/test/loginに飛ぶ。
  2. test.doへのリクエストを処理するアクションを実装したアクションクラスを定義。LoginActionが実行。パッケージ名を含めたクラス名を記述。
  3. アクションフォームBeanの論理名。form-beanのnameと合わせる。
  4. スコープを指定。デフォルトは、セッション。
  5. 遷移先の論理名でloginActionの return mapping.findfoward("success")と合わせる。表示される中身のpathは飛ばすパス。

jspファイルと設定ファイル(struts-config.xml)の関係性

jspファイル 設定ファイル(struts-config.xml)
<form>タグのアクション属性にAction名を定義 リクエスト時に<action>エレメントのpath属性と一致するアクションを実行

Discussion