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