Spring 框架與 Struts 框架集成有三個方案 1.使用spring的ActionSupport類集成Struts 採用這種方式須要修改Struts中的action,使struts的action繼承Spring的ActionSupport,這樣action中定義的業務邏輯對象可經過getBean()方法從Spring的應用上下文WebApplicationContext中得到,從而達到集成的效果。不過缺點就是使struts的Action和Spring緊密的耦合在一塊兒。 下面介紹此方案集成的步驟 (1).加載applicationContext.xml 有兩種方法 1、經過struts-config.xml文件來加載 <plug-in className="org.springframework.web.struts.ContextLoaderPlugin"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"> </set-property> </plug-in> 2、經過web.xml中配置 <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <servlet> <servlet-name>context</servlet-name> <servlet-class> org.springframework.web.context.ContextLoaderServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> (2).修改Action 以前繼承的父類是Action,須要改爲Spring的ActionSupport類,這樣就能使用上下文對象獲取applicationContext.xml配置文件裏的getBean()方法 ApplicationContext context = this.getWebApplicationContext(); 業務邏輯對象 = context.getBean("idName"); 這樣就不須要new來建立對象,把建立的細節很好的封裝起來,徹底由spring容器plicationContext.xml 來注入管理 2.使用spring的Action代理集成Struts 採用此方法須要創建一個Spring的Action代理,代理Struts的Action,當Struts執行Action時執行這個代理。代理會在Spring應用上下文找到真正的StrutsAction,而後就交給這個Action處理,下面看看步驟 (1).加載applicationContext.xml 有兩種方法 1、經過struts-config.xml文件來加載 <plug-in className="org.springframework.web.struts.ContextLoaderPlugin"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"> </set-property> </plug-in> 2、經過web.xml中配置 <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <servlet> <servlet-name>context</servlet-name> <servlet-class> org.springframework.web.context.ContextLoaderServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> (2)修改Action 爲所須要的業務邏輯對象定義屬性並增長setXXX()方法,這樣作目的是爲了使用spring的依賴注入。 (3)修改struts-config.xml文件 修改的內容是<action>元素的type屬性值。修改內容爲 type="org.springframework.web.struts.DelegatingActionProxy" (4).配置applicationContext.xml 3.最後一種有點鬱悶,目前還不理解,等學成歸來在寫進去吧!!! (*^__^*) 嘻嘻……學成歸來了 修改Struts控制器來繼承struts 爲了更直觀的在Struts配置文件中顯示出Action對應的處理類,能夠將Struts配置文件中<action>元素的type屬性直接顯示爲Struts的Action類,執行的時候還會到Spring的上下文中去查找對應的StrutsAction類。 完成這樣的過程須要修改controller,將struts-config.xml中的controller改爲org.springframework.web.struts.DelegatingTilesRequestProcessor若是Struts中使用了Tiles組件,則可使用org.springframework.web.struts.DelegatingTilesRequestProcessor來做爲controller。若是Struts沒有使用Tiles組件,則可使用org.springframework.web.struts.DelegatingRequestProcessor來做爲controller。 下面說說步驟: (1).加載WebApplicationContext.上下文同以上方法的第一步驟。 (2).新建一個類 EncodingProcessor 並繼承DelegatingRequestProcessor 實現 process()方法同時爲了解決亂碼問題必須在process()方法上添加兩行代碼: request.setCharacterEncoding(UTF-8); response.setContentType("text/html;charset=UTF-8"); (3).修改struts-config.xml文件,即修改Struts的RequestProcessor控制器 使用自定義的控制器controller須要在Struts-config.xml文件中對<controller>元素進行配置,代碼以下 <controller processorClass="EncodingProcessor的類路勁"/> 總結:從這3中方法能夠說是逐步優化,使得Struts和Spring集成變得耦合度愈來愈低,並且愈來愈直觀;