`

spring 与struts的集成

    博客分类:
  • OPEN
阅读更多
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>  
       <!-- 此处可以省略type属性 -->  
       <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">  
        <!-- Spring服务层接口 -->  
        <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
分享到:
评论

相关推荐

    Spring与Struts集成方式一

    下面,我们将深入探讨Spring与Struts的集成方式,并基于给定的标题“Spring与Struts集成方式一”展开讨论。 首先,我们需要理解Spring和Struts的核心概念。Spring框架提供了一个全面的基础架构,支持创建健壮的、...

    spring与struts集成方案二

    下面,我们将深入探讨Spring与Struts集成方案二的关键知识点。 首先,集成的主要目的是将Spring的业务逻辑管理与Struts的视图和控制层结合起来。在方案二中,通常会使用Spring作为应用程序的核心框架,负责管理Bean...

    Spring与Struts集成方式二

    在Spring与Struts集成时,我们需要Spring的核心库、Struts的主库以及相应的XML配置文件。在Spring_struts_2这个压缩包中,可能包含了这些库文件,例如spring.jar、struts2-core.jar等。确保这些库被正确地添加到项目...

    Spring与Struts集成方式三

    7. **整合Hibernate**:如果项目中还涉及到数据库操作,SpringStrutsHibernate的文件名可能暗示了Spring与Hibernate的集成。在Spring配置文件中,我们可以定义SessionFactory bean,以及数据访问对象(DAO)的bean。...

    spring_struts集成例子

    下面我们将详细探讨Spring与Struts集成的相关知识点。 首先,Spring 框架以其强大的DI(Dependency Injection)和AOP(Aspect Oriented Programming)特性而闻名,它可以管理对象的生命周期和依赖关系,使得代码...

    Spring与Struts集成_第一种方案摘录

    本文将探讨如何将Spring与Struts进行集成,特别是第一种方案的实现细节。 首先,让我们了解集成Spring和Struts的基本概念。Spring作为一个控制反转(IoC)容器,可以管理Struts中的Action类实例,提供依赖注入,使...

    Spring与Struts的集成(第二种方案):

    本文将详细探讨一种Spring与Struts集成的方案。 ### 集成背景 Spring的IoC容器可以帮助我们管理对象的生命周期和依赖关系,而Struts则专注于处理HTTP请求和响应,以及业务逻辑的流转。通过集成,我们可以让Spring...

    intellij环境下maven项目spring+struts集成空模板

    为了方便大家开发,特意制作了intellij环境下maven项目spring+struts集成空模板。直接导入intellij就可以用,模板下有个简单的小例子。对于学习spring+struts集成、以及希望快速开发的人来说都是不错的资源

    Struts,Spring与hibernate集成

    8. **Spring与Struts集成**: - 配置Action:在Spring配置文件中,将Biz注入到对应的Action类。 - 修改Struts配置:将Action的类型改为DelegatingActionProxy,这是Spring Struts集成的关键,使得Action实例由...

    Spring与Struts结合测试的问题解答

    在`StrutsTestCaseDemo`这个压缩包中,很可能包含了演示如何测试Spring与Struts集成应用的示例代码。通过分析和运行这些示例,开发者可以更直观地了解如何设置测试环境,编写测试用例,以及如何模拟HTTP请求和响应,...

    spring与struts2集成所需要的jar包

    集成Spring和Struts2的好处在于,Spring可以帮助管理Struts2的Action和业务逻辑,实现松耦合和更好的测试性。同时,Struts2的MVC模型和丰富的插件系统可以提供优雅的用户界面和交互控制。这样的结合,不仅提升了开发...

    spring与struts2整合

    同时,为了集成 Spring,需要配置 Struts2-Spring 插件,这样 Struts2 就能利用 Spring 管理的 Bean。 4. **Action 类**:Action 类通常作为 Struts2 处理请求的入口,它可以从 Spring 容器中注入所需的依赖。通过...

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    - Spring与Struts2集成,Spring可以作为Struts2的Action的依赖注入容器,通过Spring的ApplicationContext获取服务层对象,实现业务逻辑处理。 - Struts2与Hibernate集成,通常在Action中通过SessionFactory获取...

    Spring与Struts 2整合.zip

    5. **拦截器集成**:可以使用Spring的AOP拦截器与Struts 2的拦截器相结合,增强应用的功能。 6. **测试与调试**:整合完成后,进行单元测试和集成测试,确保所有组件协同工作。 整合Spring和Struts 2可以使开发...

    Spring_Struts集成

    **Spring和Struts集成详解** 在Java Web开发中,Spring框架和Struts框架都是不可或缺的组件,它们分别在依赖注入(DI)和模型-视图-控制器(MVC)架构方面展现出强大的功能。Spring提供了全面的后端服务管理,包括...

    Spring集成struts以及hibernate jar包

    标题中的"Spring集成struts以及hibernate jar包"指的是在Java Web开发中,将Spring框架与Struts2和Hibernate框架进行整合的过程。这通常是为了构建一个完整的MVC(Model-View-Controller)架构,其中Spring负责依赖...

    整合Spring与Struts的几种方法

    Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,以及对其他框架的良好集成,而Struts则是一个专注于MVC模式的轻量级框架。在整合两者时,主要目标是让Spring管理Struts的Action实例,这样可以利用Spring...

    Struts、Spring、Hibernate集成附加(Ajax)集成

    Spring与Struts集成,可以将业务逻辑组件注入到Struts的Action类中,从而简化了Action类的编写,同时也使得测试变得更加容易。此外,Spring还提供了Spring MVC,虽然与Struts都是MVC框架,但在某些情况下,Spring ...

    Spring Struts Hibernate2

    **Spring与Struts集成**: 在Spring Struts集成中,Spring可以作为依赖注入容器,为Struts的Action类提供依赖。这可以通过Spring的Struts Plugin实现,它可以自动扫描并管理Action类,同时提供了事务管理、AOP等功能...

Global site tag (gtag.js) - Google Analytics