Strutsと連携するには?(実践編) | Java Springの逆引きメモ

Java Springの逆引きメモ

JavaのSpring frameworkのメモを書いていきます!
初心者の勉強ノートなので間違いがあるかもしれませんが、何かヒントになることがあれば幸いです。

ここでは、前の記事 に書いたDelegatingActionProxy系での連携方法の実際を見てみます。

4つのうちこれを選んだのは「結局どれにしたらいいの?」で書きましたとおりです。


以下、サンプルなので一部省略するかもしれませんが、書いてみます。



【Actionクラスサンプル】

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class TestAction extends Action {

 @Override
 public ActionForward execute(ActionMapping mapping, ActionForm form,
      HttpServletRequest request, HttpServletResponse response)
      throws Exception {
    //
    //String value = mapping.getParameter();
    
    test();
    return mapping.getInputForward();
 }
  
}


【Struts設定ファイルの記述例】


  <action scope="request" input="/WEB-INF/jsp/HelloWorld1.jsp" 
  type="org.springframework.web.struts.DelegatingActionProxy" 
  path="/test" />




【Spring設定ファイルの記述例】

 <bean name="/test" class="presentation.action.TestAction" />




【説明】

連携で必要なのは、

 ①普通どおりにStrutsのActionの継承クラスを作成すること

 ②Struts設定ファイルにactionタグを登録。このとき、typeは

  org.springframework.web.struts.DelegatingActionProxy

  にする。

 ③Spring設定ファイルに①で作成したクラスを設定する。

  このとき、Strutsのパス(この場合、/test)とid名をあわせる。


これだけです。

簡単でしょ?



<動作について>

動作は以下のようになります。

①クライアントからのリクエストをStrutsが受け取る

②Strutsは設定ファイルに従ってtypeに設定されたクラスを取得する。

 具体的にはDelegatingActionProxyクラスが設定されているのでそれに処理を渡す。

DelegatingActionProxyは、内部でStringの設定を呼び出して、リクエストのパスと同じidのbeanを検索し、

 取得する。

④取得したbeanのexecute()メソッドを呼び出す。




参考:

Strutsと連携するには? (理論)