快速业务通道

整合Spring与Struts的几种方法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

整合Spring与Struts的几种方法

时间:2011-03-14 Fruitful

Spring与Struts对Model-View-Controller模式均提供了很好的支持。相比之下,Struts是一个比较单纯的MVC框架,在实际应用中,开发人员更喜欢使用Struts完成MVC的设计,因而在有必要对Spring与Struts进行整合。

整合的关键点在于:将Struts中Action的实例生成不再由Struts自己负责,而交于Spring容器去管理。因此,进行整合的一个技术前提是Struts中作为Controller的ActionServlet必须能够装载Spring的应用程序环境,而Spring的org.springframework.web.struts.ContextLoaderPlugin恰好提供了这种支持。在Struts的配置文件struts-config.xml中,将ContextLoaderPlugin注册即可,示例如下:

<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> ... <plug-in className=”org.springframework.web.struts.ContextLoaderPlugin”> <set-property property=”contextConfigLocation” value=”/WEB-INF/config.xml”/> </plug-in> ... </struts-config>

其中的config.xml是Spring的配置文件。

之后,我门可以采用三种方式之一来整合Spring和Struts:

1.Struts的Action继承Spring的ActionSupport类,并在Action中获取Spring的ApplicationContext。这是最简单的一种整合方式,但有三个缺点:第一,Struts与Spring紧密耦合,不能改换到其他IoC容器;第二,难以使用Spring AOP特性;第三,对于需要使用DispatchAction的Struts应用无能为力。

2.在Struts的配置文件中,以Spring的DelegatingRequestProcessor类代替Struts的RequestProcessor类,并在Spring的配置文件中定义与Struts配置文件中<action-mappings>对应的bean,从而将Struts的Action与Spring分开,并把Struts的动作置于Spring的控制之下。这种整合方式的优点是将不再依赖Spring这个特定的IoC容器,但必须依赖Struts的RequestProcessor类。  

3.通过Spring的DelegatingActionProxy类代理Struts的动作,即在Struts配置文件中,定义<action-mappings>的type属性全部改为DelegatingActionProxy,而不是具体的类名,并在Spring配置文件中定义与Struts动作映射对应的bean,从而将Struts的Action与Spring分开,并把Struts的动作置于Spring的控制之下。无疑,这是最灵活的一种整合方式。

下面就通过HelloWorld示例来分析一下第三种整合方式的实施步骤。

Step 1:修改Struts的配置文件struts-config.xml

<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="helloWorld" type="com.strutstest.action.HelloWorld"/> </form-beans> <action-mappings> <!--注意此处的type属性定义为DelegatingActionProxy 类--> <action path="/helloWorld" type="org.springframework.web.struts.DelegatingActionProxy" name="helloWorld" validate="true" input="/WEB-INF/jsp/input.jsp"> <forward name="in

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号