使用Spring的ActionSupport 類整合Structs1.X,使用 Spring 的 DelegatingRequestProcessor覆蓋Struts的RequestProcessor,將StrutsAction管理委託給Spring框架
--
裝載應用環境:
無論您使用哪種技術,都需要使用 Spring 的 ContextLoaderPlugin 爲 Struts 的 ActionServlet 裝載 Spring 應用程序環境
在struts-config.xml 文件尾處添加該插件:
<plug-in className= "org.springframework.web.struts.ContextLoaderPlugIn">
<set-propertyproperty= "contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml"/>
</plug-in>
--
第一種:使用Spring的ActionSupport
該方法: 簡單快捷,但會導致struts和spring耦合在一起,如果要移值struts應用程序要重寫代碼.
例如:
public class ActionName extends ActionSupport {
public ActionForward execute( ){
------------------------------------------------------------------------------
ApplicationContext ctx= getWebApplicationContext();
BookService bookService = (BookService) ctx.getBean("bookService");
-------------------------------------------------------------------------------------------------------------
}
}
--
第二種:覆蓋 RequestProcessor
該方法使用 org.springframework.web.struts.DelegatingRequestProcessor 類來覆蓋 Struts 的 RequestProcessor 處理程序,通過 Spring 的 DelegatingRequestProcessor 進行整合,看下面的struts-config.xml文件的主要配置部分:
<form-beans>
<controller processorClass="org.springframework.web.struts.
DelegatingRequestProcessor"/>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml"/>
</plug-in>
<form-beans/>
此方法比第一種要好,但如果您使用一個不同的 RequestProcessor,則需要手動整合 Spring 的 DelegatingRequestProcessor,添加的代碼會造成維護的麻煩並且將來會降低您的應用程序的靈活性。
--
第三種:將動作管理委託給 Spring
這裏列出struts-config.xml中的主要部分:
<action path="/searchSubmit"
type="org.springframework.web.struts.DelegatingActionProxy"
...............
</action>
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/application.xml"/>
</plug-in>
此方法是三種方法中最好的