Struts与Spring的集成主要有两种方式,即DelegatingRequestProcessor和DelegatingActionProxy方式,这两种方式应用了Spring IOC来管理Struts的Action,顾名思义,两者即是在代理某对象,熟释Struts的必然知晓RequestProcessor和Action,Spring在这两处切入到页面层的请求链中(通过扩展Struts中的RequestProcessor、Action类),以便将截获的请求传入到Spring管理的Action实例中,从而实现页面层到服务层的有效衔接。配置在Struts 1.2.9 + Spring 2.0环境下通过。
1 DelegatingRequestProcessor
1.1 配置ContextLoaderPlugin加载Spring配置
Spring中的ContextLoaderPlugin类实现了Struts的PlugIn接口,用于加载Spring配置。
ContextLoaderPlugin默认加载为WEB-INF\${actionServletName}-servlet.xml,如果应用部署描述文件web.xml中配置:
- <servlet>
- <servlet-name>actionServlet</servlet-name>
- <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
- <init-param>
- <param-name>config</param-name>
- <param-value>/WEB-INF/struts-config.xml</param-value>
- </init-param>
- </servlet>
则ContextLoaderPlugin默认加载为WEB-INF\actionServlet-servlet.xml文件。我们需要在struts-config文件中加入:
- <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"/>
如果有多个Spring配置文件,则可以如下使用:
- <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
- <set-property property="contextConfigLocation"
- value="/WEB-INF/spring/applicationContext.xml,
- /WEB-INF/spring/actionContext.xml/>
- </plug-in>
1.2 配置DelegatingRequestProcessor转发请求
在Struts中,ActionServlet通过RequestProcessor完成实际的请求转发,Spring中的DelegatingRequestProcessor扩展了Struts下的RequestProcessor类,要想DelegatingRequestProcessor完成请求转发就得在struts-config.xml文件中配置:
- <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
1.3 配置Struts中的Action
Struts配置文件struts-config.xml配置片段:
- <action-mappings>
-
- <action path="/PreAddEditBook" name="bookForm" scope="request">
- <forward name="AddEditBookJsp" path="/AddEditBook.jsp"/>
- action>
- action-mappings>
Spring配置文件actionContext.xml配置片段:
- <bean name="/PreAddEditBook" class="com.examples.action.PreAddEditBookAction"
- scope="singleton">
-
- <property name="bookManager" ref=" bookManager"/>
- </bean>
2 DelegatingActionProxy
Spring中的这个DelegatingActionProxy类扩展了Struts中的Action类。
此种方式只需要在以上方式修改两处即可:
1) 将1.2的配置注释掉;
2) 1.3中Struts配置文件struts-config.xml中的action配置里加入type=”org.springframework.web.struts.DelegatingActionProxy”属性项。
3 两种方式比较
1) 两者的目的都是将请求转发给Spring管理的Bean;
2) 在请求转发给action之前,转发给Spring的Bean;DelegatingRequestProcessor
3) 被配置为Struts的action,所有请求由ActionServlet截获再转发到action(所有action的实现类都是DelegatingActionProxy),DelegatingActionProxy再将请求转发到Spring的Bean;DelegatingActionProxy
4) 占用了一个Struts的扩展点即RequestProcessor,用户如需扩展Struts的RequestProcessor,此时只能从DelegatingRequestProcessor作为基类扩展;DelegatingRequestProcessor
5) 相对较多地侵入了Struts原有的独立的配置,所有action的实现类都是DelegatingActionProxy,页面层不方便脱离Spring。DelegatingActionProxy
分享到:
相关推荐
在"第27讲--Struts与Spring集成方案1(Struts集成Spring)"中,我们主要探讨如何将Struts2与Spring进行整合。集成的主要目的是利用Spring的强大功能来管理Struts2中的Action类,从而实现更灵活的依赖注入和更好的控制...
本讲解将深入探讨如何将Spring集成到Struts中,以实现更好的控制反转(IoC)和面向切面编程(AOP)。 Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,主要用于处理HTTP请求和展示视图。它...
《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...
struts hibernate spring集成开发宝典光盘源码(一).rar
这个压缩包“struts hibernate spring集成开发宝典光盘源码(二).rar”显然是一个用于学习这三大框架集成的实践项目,包含了一些示例代码和接口定义。 1. Struts:Struts 是一款开源的MVC(Model-View-Controller...
Struts+Spring集成的主要目的是利用两者的优点,使开发更高效、维护更方便。在集成过程中,通常会用Spring来管理Struts中的Action类,实现Action的依赖注入,从而提高代码的可测试性和解耦性。下面将详细讲解这个...
3. **Struts与Spring集成**:将Struts与Spring集成,可以利用Spring的强大功能来管理Struts中的Action和Service。通过Spring的ApplicationContext,Action和Service可以被声明式地注入,从而实现依赖管理。同时,...
请下载Struts Hibernate Spring集成开发宝典.part1.rar和Struts Hibernate Spring集成开发宝典.part2.rar 《Struts Hibernate Spring集成开发宝典》中文pdf版 计算机电子书下载,《Struts Hibernate Spring集成开发...
《Struts Hibernate Spring集成开发宝典》选取的实例繁简适中,与实际开发工作紧密结合,内容讲解由浅入深、循序渐进,可以满足不同层次读者的需求。 作者简介 陈天河,具有多年的软件开发经验,从事基于Java的Web...
- **Struts-Spring集成**:通过Spring的Action代理,可以将Struts的Action实例化和管理交给Spring,实现Action的依赖注入。同时,Spring可以作为Struts的ModelDriven模式的实现,简化模型与视图的交互。 - **...
Spring MVC作为其Web开发的一部分,可以与Struts很好地集成,提供更强大的控制层。同时,Spring的Hibernate支持使得数据访问层的管理更加方便。 Struts、Hibernate和Spring的集成主要体现在以下几个方面: 1. 依赖...
《Struts Hibernate Spring 集成开发宝典》是一本深度探讨企业级Java应用开发的著作,重点关注了三个核心框架的整合使用:Struts、Hibernate和Spring。这三大框架是Java Web开发中的重要组成部分,各自在不同的层面...
**Struts2与Spring的集成** 主要是通过Spring插件实现,这使得Action类可以作为Spring的bean管理,实现依赖注入。这样,Action类可以直接注入服务层(Service)和DAO(数据访问对象)层的bean,简化了代码结构,增强...
《Struts Hibernate Spring 集成开发宝典》是一本深度解析Java企业级应用开发的著作,主要聚焦于三大框架——Struts、Hibernate和Spring的整合应用。这三者是Java Web开发中的核心技术,它们各自解决不同的问题,而...
Struts Hibernate Spring集成开发宝典
通过以上步骤,我们可以成功地将Struts2和Spring集成在一起,利用Spring的强大功能管理Action类、事务以及其他的业务逻辑,同时保持Struts2的MVC架构清晰易用。这种集成方式提高了代码的可测试性,降低了耦合度,...
Struts Hibernate Spring 集成开发宝典4
Struts Hibernate Spring 集成开发宝典3
将Struts、Hibernate、Spring集成,通常采用Spring作为核心容器,管理所有Bean,包括Struts的Action和Hibernate的SessionFactory。ActionForm可以被Spring托管,利用Spring的依赖注入,将SessionFactory注入到...