`

Spring和Struts 2整合

阅读更多

Spring 和Struts 2都是应用非常广泛的J2EE应用程序框架,Struts 2主要注重的是将视图层和控制层分开,但是不涉及对模型层的优化设计;而Spring除了实现Struts 2的MVC功能外,还可以利用其控制反转的思想实现对模型层的优化,从更深层次去降低应用程序各个组件的耦合程度。本节将结合实例讲解如何实现 Spring框架和Struts 2框架的集成使用。

23.6.1 整合原理

Struts 2在发布的时候在其插件包struts-2.1.2\lib中有struts2-spring-plugin-2.1.2.jar,正是它实现了 Struts 2和Spring的整合。这个插件覆盖了Struts 2的ObjectFactory,所以在Struts 2创建一个对象的时候,例如Action类,它会先到Struts 2的配置文件去寻找类的名字,然后转到Spring配置文件中去查找名字找到该类。解压struts2-spring-plugin- 2.1.2.jar,可以看到有一个struts-plugin.xml文件,其内容如下:

可以看到,上面代码中用<bean>标签定义了一个name为StrutsSpringObjectFactory的bean对象,用 它去替换struts.objectFactory:<constant name="struts.objectFactory" value="spring" />。并且定义了一个spring-default包,该包有两个拦截器,如果Action类不是由ObjectFactory创建的话,则这两个 插件会自动装配Action类。

附加一部分:


Struts2与Spring 的集成要用到Spring 插件包struts2-spring -plugin-x-x-x.jar,这个包是同Struts2一起发布的。Spring 插件是通过覆盖(override)Struts2的ObjectFactory来增强核心框架对象的创建。当创建一个对象的时候,它会用Struts2配置文件中的class属性去和Spring 配置文件中的id属性进行关联,如果能找到,则由Spring 创建,否则由Struts 2框架自身创建,然后由Spring 来装配。Spring 插件具体有如下几个作用:

— 允许Spring 创建Action、Interceptror和Result。

— 由Struts创建的对象能够被Spring 装配。

— 如果没有使用Spring ObjectFactory,提供了2个拦截器来自动装配action。

开发者不必在Spring 中去注册action,尽管可以这么去做,通常Struts框架会自动地从action mapping中创建action对象。

struts2-spring -plugin-x-x-x.jar插件中有一个struts-plugin.xml文件,该文件内容如下所示:查看

其中设置了Struts 2框架常量struts.objectFactory的值为spring ,实际上,spring 是org.apache.struts2.spring .StrutsSpringObjectFactory类的缩写,默认情况下所有由Struts 2框架创建的对象都是由ObjectFactory实例化的,ObjectFactory提供了与其他IoC容器如Spring 、Pico等集成的方法。覆盖这个ObjectFactory的类必须继承ObjectFactory类或者它的任何子类,并且要带有一个不带参数的构造方法。在这里用org.apache.struts2.spring .StrutsSpring ObjectFactory代替了默认的ObjectFactory。

如果Action不是使用Spring ObjectFactory创建的话,插件提供了两个拦截器来自动装配Action,默认情况下框架使用的自动装配策略是name,也就是说框架会去Spring 中寻找与Action属性名字相同的bean,可选的装配策略还有:type、auto、constructor,开发者可以通过常量struts.objectFactory.spring .autoWire来进行设置。

Struts 2框架整合Spring 后,处理用户请求的Action并不是Struts框架创建的,而是由Spring 插件创建的。创建实例时,不是利用配置Action时指定的class属性值,根据bean的配置id属性,从Spring 容器中获得相应的实例。


23.6.2 整合步骤

Spring和Struts 2的整合其实很简单,下面是整合步骤。

(1)复制jar文件。把struts 2-spring-plugin-2.1.2.jar和spring.jar复制到Web工程的WEB-INF/lib目录下,并且还需要复制commons-logging.jar。

(2)配置struts.objectFactory属性。在文件struts.properties中设置struts.objectFactory属性,使其使用StrutsSpringObjectFactory,代码如下:

当然也可以在struts.xml文件中配置,其中spring就是struts-plugin.xml中定义的bean:spring,代码如下所示。

(3)配置Spring监听器。在web.xml文件中增加如下内容:

(4)编写Spring配置文件。默认情况下Spring配置文件的名字为applicationContext.xml,该文件需要保存到Web工程的WEB-INF/目录下。内容实例如下:

在这个文件中定义要加载的类对象。

(5)编写Struts 2配置文件。将Struts 2和Spring集成,其配置文件也有变化,如下所示。

可以看出上面代码中的LoginAction其class属性并没有给出完整路径名,因而objectFactory是找不到该类的,所以就会到applicationContext.xml中去寻找bean的名字为login的类对象。

来源:http://book.51cto.com/art/200909/154478.htm

分享到:
评论

相关推荐

    dwr和spring和struts2整合

    Spring还提供了对其他框架的集成支持,如数据库访问、事务管理以及与Struts2和DWR的整合。 Struts2是一个基于MVC设计模式的Java Web框架,用于构建可维护、可扩展的应用程序。它提供了强大的动作类、拦截器、结果...

    spring 和Struts2整合总结

    Spring 和 Struts2 整合是企业级 Java Web 开发中的常见实践,它结合了 Spring 的依赖注入(DI)和面向切面编程(AOP)能力与 Struts2 的强大 MVC 框架,实现了一个高效、灵活的开发模式。在本文中,我们将深入探讨...

    spring+struts2整合源码

    本文将基于"spring+struts2整合源码"的标题和描述,详细讲解Spring和Struts2的整合过程,以及整合过程中涉及的关键知识点。 首先,Spring和Struts2整合的主要目的是实现业务逻辑层和表现层的解耦,提高代码的可测试...

    spring和struts2整合入门

    SSH是Spring、Struts2和Hibernate的组合,是一种常见的Java Web开发栈。Hibernate是一个ORM框架,负责对象与关系数据库之间的映射。整合SSH意味着在一个项目中同时使用这三个框架,实现模型、视图、控制器和持久化的...

    spring与struts2整合

    Spring 和 Struts2 是两个...总之,Spring 和 Struts2 的整合利用了两者的优势,提供了一种强大的方式来构建可扩展、易于维护的 Java Web 应用。通过深入学习和实践,开发者可以掌握这种整合技巧,并在实际项目中应用。

    Spring与Struts 2整合.zip

    整合Spring和Struts 2的主要目的是将Spring的依赖注入和管理能力引入到Struts 2的Action中,以及利用Spring的AOP进行事务管理。整合步骤通常包括以下几个部分: 1. **添加依赖**:在项目中引入Spring和Struts 2的库...

    Spring/Struts2整合项目

    整合Spring和Struts2的主要目标是利用Spring的强大功能来管理Struts2中的Action类以及相关的业务逻辑,同时借助Struts2的优秀表现力来处理用户界面和请求转发。 **整合步骤:** 1. **配置环境**:确保已经安装了...

    Spring与Struts2整合

    - 确保Struts2和Spring的版本兼容,避免因版本问题引发的冲突。 - 配置文件的正确性至关重要,任何一个小错误都可能导致应用无法正常运行。 - 在使用Struts2-Spring插件时,注意Action类的生命周期是由Spring控制,...

    Spring+Struts2整合例子

    整合 Spring 和 Struts2,主要目标是将 Struts2 的请求处理能力与 Spring 的 DI 和 AOP 功能结合起来。以下是一些整合的关键步骤: 1. **配置 Spring**:首先,你需要创建一个 Spring 配置文件(如 `beans.xml`),...

    Spring、Struts2整合架包

    整合 Spring 和 Struts2 可以充分利用各自的优势,实现更高效、更灵活的业务逻辑处理和控制流管理。 1. **Spring 框架核心概念**: - **依赖注入(DI)**:Spring 通过配置文件或注解来管理对象的依赖关系,使得...

    spring和struts的整合-aop的使用

    Spring和Struts2的整合需要相关的jar包,包括Spring的核心库、Struts2的核心库以及Spring的Struts2插件库。确保所有必要的依赖都被正确地添加到项目的类路径中,这是项目能正常运行的基础。 然后,我们转向AOP的...

    spring与struts2的整合-src.zip

    - 确保Struts2和Spring的版本兼容。 - 谨慎处理Spring和Struts2的生命周期差异,避免出现对象状态不一致的问题。 - 为避免类路径冲突,合理管理jar包。 7. **实际应用**: 这种整合方式常用于大型企业级应用,...

    struts2+Hibernate+Spring整合开发代码

    Spring还能与各种其他框架(如Struts2和Hibernate)无缝集成,简化整体应用的构建。 在这个"struts2+Hibernate+Spring整合开发代码"中,开发者可以学习到以下几个关键知识点: 1. **配置整合**:理解如何在Spring...

    Spring整合Struts2

    Spring整合Struts2是Web开发领域中常见的技术组合,它结合了Spring的强大 IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)功能,以及Struts2的MVC(Model-View-...

    spring+struts2+ibatis整合的jar包

    总的来说,Spring、Struts2和iBatis的整合为Java Web开发提供了一个强大、灵活的解决方案,让开发者能够更专注于业务逻辑,而不是框架的底层实现。通过合理的配置和使用这个jar包,开发者可以快速构建出稳定、高性能...

    Struts2整合Spring、JPA

    Struts2整合Spring和JPA是企业级Java应用开发中常见的技术组合,它们分别负责不同的职责:Struts2作为一款成熟的MVC框架,主要用于处理Web层的请求与响应;Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和...

    Spring+Struts2+hibernate+Redis整合

    在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...

    Spring2.0整合Struts2.0

    这个压缩包中的"SpringStruts2"示例项目很可能就是这样一个整合实例,包含了配置文件、Action类和必要的注释,是学习和理解两者整合的好资源。深入研究并实践这个示例,有助于提升对Spring和Struts2整合的理解和应用...

    spring和struts2.x的整合篇

    spring和struts2.x的整合篇spring和struts2.x的整合篇

Global site tag (gtag.js) - Google Analytics