转自:http://xm-king.javaeye.com/blog/519792
在Spring整合struts(一)中,我详细介绍了如何在Web应用中启动Spring,创建ApplicationContext实例,在本篇文章中,我将继续就Spring整合struts做进一步的探讨,简单的说就是Spring是如何管理Action这个bean的。
如果系统采用了Spring,Spring负责业务逻辑组件的创建和生成,并将管理业务逻辑组件的生命周期。可以这样理解:Spring是个性能非常优秀的工厂,可以成产出所有的实例,从业务逻辑组件到持久层组件,甚至控制器。在这里,我推荐使用利用Spring的IOC特性整合struts,采用这种方式能充分利用Spring依赖注入的优势,无须显式地获取Spring的ApplicationContext实例。由SpringIOC容器管理Action也有以下两种方式:
1:使用Spring 的 DelegatingRequestProcessor 类。
2:全权委托DelegatingActionProxy。
1:使用Spring 的 DelegatingRequestProcessor 类
查看Struts的源码,可以看到由ActionServlet调用RequestProcessor完成实际的转发,如想在ActionServlet处将请求转发给ApplicationContext的bean,可以通过扩展RequestProcessor完成,使用扩展的RequestProcessor替代struts的RequestProcessor。
Spring能完成这种扩展,因为Spring提供的DelegatingRequestProcessor继承自 org.apache.struts.action.RequestProcessor 并覆盖了里面的方法。为了让Struts使用DelegatingRequestProcessor,通过 <controller >来替代org.apache.struts.action.RequestProcessor 的请求处理。还需要再Struts-config.xml文件中增加如下代码:
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
完成这个设置后,Struts会将拦截道德用户请求转发到Spring Context下的bean,根据bean的name属性来匹配。而Struts中的action配置则无须配置type属性,即使配置了type属性也没有任何用处
2:全权委托DelegatingAcionProxy:
DelegatingRequestProcessor替换了原来的RequestProcessor,并在请求转发给action之前,转发给Spring管理的bean;而DelegatingAcionProxy则被配置成Struts的action,即所有的请求先被ActionServlet拦截,然后将请求转发到对应的action,而action的实现类全都是DelegatingRequestProcessor;最后由DelegatingAcionProxy将请求转发给Spring容器的bean。
DelegatingAcionProxy接受ActionServlet转发过来的请求,然后转发给ApplicationContext管理的bean,这是典型的链式处理、在Struts-config.xml文件中配置了大量的DelegatingAcionProxy实例,Spring容器中也配置了同名的Action、即Struts的业务控制器分成了两个部分:第一部分是Spring的DelegatingAcionProxy,这个部分没有实际意义,仅仅完成转发;第二部分是用户的Action实现类,负责实际的处理工作。
总结一下:
整合工作中的步骤:
1,修改struts-config.xml
2, 配置applicationContext.xml
3, 为Action添加get/set方法 来获得依赖注入的功能。
分享到:
相关推荐
Spring 整合 Struts,很强大
使用Spring整合Struts编写多页面用户注册模块 使用Spring整合Struts编写多页面用户注册模块
spring框架整合struts框架时必需的类库文件
Spring整合集成Struts1.2最简单例子
只使用spring和struts进行整合
Spring与struts整合主要有三种方式,通过Spring的ActionSupport类,通过Spring的DelegatingRequestProcessor类、通过Spring的DelegatingActionProxy类。
spring整合struts.rar
Spring 整合 Struts2 详解
Spring整合Struts2 SSH 最少jar包
spring整合struts2与hibernate核心配置文件
JPA+Spring+Struts整合实例,JPA+Spring+Struts整合实例
此资源中包涵了spring整合struts和hibernate的所有资源,在做项目时只要在工程中引入该jar包就行,不用在eclipse或Myeclipse中加载strut与hibernate的资源了,挺有用的!
Spring+Struts+Hibernate比较详细的整合配置方案
整合Spring与Struts的几种方法
spring与struts2整合的小示例,适合初学者,具体说明在博客里
spring和struts整合的三种方案.
深层次理解Spring整合Struts2开发原理,更有效地组织开发过程
里面有spring+struts2+ibatis整合的jar包,
struts和spring整合的2种方式
一个spring整合struts2的完整实例源码