`
guzizai2007
  • 浏览: 360503 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2+Spring整合后Action对象创建方式

 
阅读更多

1、Spring容器创建:(web.xml中配置)

<!-- spring配置文件-->
	<context-param>
		<param-name>contextConfigLocation</param-name>
	    <param-value>WEB-INF/classes/com/zjy/gpx/config/applicationContext*.xml</param-value>    
	</context-param>
	<!-- Spring监听器,随web应用启动初始化Spring容器  -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

 2、action创建的两种方式,第一种由Spring负责管理:

 

struts.xml文件中

<!-- spring来管理action对象的创建 -->
 	<constant name="struts.objectFactory" value="spring" />

<!-- 省,市,县地区选择 -->
		<action name="city_*" class="coreCityAction" method="{1}">
			<result name="success">/success.jsp</result>
			<result name="error">/error.jsp</result>
		</action>

applicationContext文件中:

<bean id="coreCityAction" class="com.zjy.gpx.struts.CoreCityAction">
		<property name="coreCityService" ref="coreCityService" />
	</bean>

 

这里是通过Spring来负责创建Action对象,这个工作是通过Struts2提供的Spring插件struts-spring-plugin完成的,插件文档地址:http://struts.apache.org/release/2.0.x/docs/spring-plugin.html

 

struts.xml文件中action配置的class属性对应spring配置文件中Bean的id名,当struts2将请求转发给指定的Action时,struts.xml中的Action就是个“伪”Action,因为它的class属性不是一个真实的类,而它指定的是spring容器中Action实例的id。

 

注意:由Spring负责创建action对象的时候一般要加上scope属性,比如:scope = "prototype",因为spring默认生成的Bean是单例的,而struts2负责生成的action是多例的,每个action值栈中都对应一个请求存放不同的局部变量,所以这里需要加上scope属性。

 

这种方式不足之处:必须把所有action配置在spring中,而且struts.xml还要写生一个伪action,导致配置文件臃肿;

 

 3、第二种方式:Spring的自动装配,Action会自动从Spring容器中获取逻辑层组件(service)

 

struts.xml文件(和未整合前一致)

<action name="relogin" class="com.xxt.user.action.LoginAction">
			<result name="input" type="freemarker">/login/index.ftl</result>
			<result name="error" type="freemarker">/error.ftl</result>
		</action>

 applicationContext文件中:(一个简单的Bean)

<bean id="loginService"
		class="com.xxt.user.service.impl.LoginServiceImpl">
		<property name="dbs" ref="dbs"></property>
	</bean>

 

action方法中有LoginServiceImpl loginService = null;然后setter()方法。

基本流程是这样的,这种情况还是由Struts2自己创建Action对象,创建后的对象会去Spring容器中寻找它成员变量对应的Bean,默认的自动装配策略是按照名字来匹配的。

 

通过设置struts.objectFactory.spring.autoWire常量来改变Spring装配策略。几个常用的值:

name、type、auto、constructor,这个和Spring自身的转配策略是相同的。

 

这种方式优点:struts.xml文件和未整合前是一致的,主要是要在spring配置文件中定义逻辑层的Bean,相比前一种好处就是简化配置文件。

缺点:如果采用默认自动装配策略,action类中的成员变量名要和spring中Bean id名保持一致,且代码可读性差些。

 

由spring创建action对象的好处??

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    struts2+spring+mybatis+easyui的实现

    总的来说,"struts2+spring+mybatis+easyui"的实现是一个标准的Java Web项目结构,它利用Maven进行构建管理,通过整合四个组件,实现了后端的业务逻辑处理、数据访问和前端的用户界面展示。这种架构在实际开发中具有...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用03

    Struts2、Hibernate和Spring是Java企业级应用中三大核心框架,它们的整合使用能够构建出高效、可维护性高的Web应用程序。本篇将深入剖析这三者如何协同工作,并提供实际范例应用。 首先,Struts2作为MVC(模型-视图...

    struts2+spring2.5+hibernate3.2整合完整项目,带数据库脚本

    Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts2 + spring 3 + hibernate3.3整合实现图书馆管理管理

    例如,Struts2的Action可以通过Spring注入所需的Service或DAO层对象,以便调用业务方法。AOP常用于日志记录、事务管理等,例如,在添加、删除或修改书籍时,可以使用AOP来处理事务,确保数据的一致性。 Hibernate...

    spring+struts2+ibatis整合的jar包

    Struts2提供了一套完整的Action、Result和Interceptor机制,使得开发者可以轻松创建动态的Web应用。同时,它支持多种视图技术,如JSP、FreeMarker等。 iBatis则解决了Java中的JDBC繁琐的数据库操作问题。它允许...

    轻量级Java EE企业应用实战(第4版) Struts 2+Spring 4+Hibernate整合开发 光盘 源码

    《轻量级Java EE企业应用实战(第4版)》这本书深入探讨了Struts 2、Spring 4和Hibernate这三大框架的整合开发,旨在帮助读者掌握如何在实际项目中高效构建Java EE应用。SSH(Struts 2、Spring、Hibernate)是Java ...

    struts2 + spring + ibatis 整合例子

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层以及数据访问层。将这三个框架整合在一起,可以构建出高效、灵活且易于维护的Web应用程序。下面我们将详细...

    struts2+spring+mybatis框架

    在Struts2+Spring整合中,Spring负责业务层对象的管理,提供IOC(Inversion of Control)容器来管理和控制对象的生命周期。同时,Spring的AOP模块可以用于实现如日志记录、权限控制等通用功能。 **MyBatis框架** ...

    最新项目系统:Struts2+Spring4+Hibernate4三大框架整合

    总的来说,"最新项目系统:Struts2+Spring4+Hibernate4三大框架整合"为学习和实践Java Web开发提供了一个实用的平台,对于提升开发者的技术水平和项目经验具有极大的帮助。通过深入研究和实践,开发者可以掌握Java ...

    struts2+spring+hibernate 整合的jar包

    4. **整合Struts2和Spring**:使用Struts2的Spring插件,将Spring管理的Bean注入到Struts2的Action中,通常通过`&lt;struts-plugin&gt;`标签进行配置。 5. **配置Struts2**:创建Struts2的配置文件(struts.xml),定义...

    Struts 2+Hibernate+Spring整合开发技术详解 12~17章

    这本由蒲子明编著的《Struts 2+Hibernate+Spring整合开发技术详解》深入探讨了如何将这三个框架有效结合,以构建高效、模块化的Web应用。书中第12到17章的内容涵盖了以下几个关键知识点: 1. **Struts 2框架**: -...

    struts2+HIbernate+Spring整合所需jar包

    总的来说,Struts2+Hibernate+Spring整合涉及多个jar包的配合使用,每个jar包都在整个应用程序架构中扮演着重要的角色。理解并正确配置这些jar包,能够帮助开发者构建出高效、可维护的Java Web应用。

    Struts2+Spring4+Hibernate5整合

    在Struts2+Spring4整合中,Spring负责管理Action类及其依赖,使得应用更易于测试和解耦。 **Hibernate5** 是一个对象关系映射(ORM)框架,简化了数据库操作。它将Java对象与数据库表进行映射,使得开发者可以使用...

    Struts1+Spring2+Hibernate2整合详细例子

    5. **集成Struts1和Spring2**:使用Spring的Struts插件,将Spring管理的Bean注入到Struts的Action中,实现依赖注入。 6. **集成Spring2和Hibernate2**:在Spring的配置文件中,配置Hibernate的SessionFactory,并...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用02

    这个"Struts2+Hibernate+Spring整合开发深入剖析与范例应用02"的学习资源,很可能是关于这三大框架集成使用的详细教程或案例集。02这个文件名可能代表系列的第二部分,意味着它可能在前一部分的基础上进一步深入讲解...

    10.6struts2+hibernate+spring的整合源代码

    在SSH整合中,Spring通常用来管理Struts2的Action实例,以及Hibernate的数据访问对象(DAO)。项目的ApplicationContext配置文件(如applicationContext.xml)会定义bean的声明和依赖关系。 在这个简单的登录页面...

    Struts2+Spring2+iBatis2整合的例子

    在Struts2+Spring的整合中,Spring主要负责管理Bean,包括Struts2的Action,实现业务逻辑的解耦。 **iBatis** 是一个持久层框架,它简化了Java与数据库的交互,通过XML或注解方式配置SQL语句,将SQL与Java代码分离...

    struts2+spring3+ibatis项目整合案例

    Struts2与Spring3的整合,使得我们可以利用Spring来管理Struts2的Action,从而实现依赖注入,提高代码的可测试性和可维护性。 Spring3则是企业级应用的全面解决方案,包括IoC(Inversion of Control,控制反转)和...

    struts2+hibernate+spring+dwr整合

    2. Spring 作为整体的容器,管理所有组件的生命周期,包括Struts2的Action、Hibernate的数据访问对象(DAO)以及DWR的远程接口。Spring的DI特性使得各组件之间的依赖关系得以解耦。 3. Hibernate 作为持久层框架,...

Global site tag (gtag.js) - Google Analytics