ここでは、前の記事 に書いた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と連携するには? (理論)