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"的实现是一个标准的Java Web项目结构,它利用Maven进行构建管理,通过整合四个组件,实现了后端的业务逻辑处理、数据访问和前端的用户界面展示。这种架构在实际开发中具有...
Struts2、Hibernate和Spring是Java企业级应用中三大核心框架,它们的整合使用能够构建出高效、可维护性高的Web应用程序。本篇将深入剖析这三者如何协同工作,并提供实际范例应用。 首先,Struts2作为MVC(模型-视图...
Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...
Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...
例如,Struts2的Action可以通过Spring注入所需的Service或DAO层对象,以便调用业务方法。AOP常用于日志记录、事务管理等,例如,在添加、删除或修改书籍时,可以使用AOP来处理事务,确保数据的一致性。 Hibernate...
Struts2提供了一套完整的Action、Result和Interceptor机制,使得开发者可以轻松创建动态的Web应用。同时,它支持多种视图技术,如JSP、FreeMarker等。 iBatis则解决了Java中的JDBC繁琐的数据库操作问题。它允许...
《轻量级Java EE企业应用实战(第4版)》这本书深入探讨了Struts 2、Spring 4和Hibernate这三大框架的整合开发,旨在帮助读者掌握如何在实际项目中高效构建Java EE应用。SSH(Struts 2、Spring、Hibernate)是Java ...
Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层以及数据访问层。将这三个框架整合在一起,可以构建出高效、灵活且易于维护的Web应用程序。下面我们将详细...
在Struts2+Spring整合中,Spring负责业务层对象的管理,提供IOC(Inversion of Control)容器来管理和控制对象的生命周期。同时,Spring的AOP模块可以用于实现如日志记录、权限控制等通用功能。 **MyBatis框架** ...
总的来说,"最新项目系统:Struts2+Spring4+Hibernate4三大框架整合"为学习和实践Java Web开发提供了一个实用的平台,对于提升开发者的技术水平和项目经验具有极大的帮助。通过深入研究和实践,开发者可以掌握Java ...
4. **整合Struts2和Spring**:使用Struts2的Spring插件,将Spring管理的Bean注入到Struts2的Action中,通常通过`<struts-plugin>`标签进行配置。 5. **配置Struts2**:创建Struts2的配置文件(struts.xml),定义...
这本由蒲子明编著的《Struts 2+Hibernate+Spring整合开发技术详解》深入探讨了如何将这三个框架有效结合,以构建高效、模块化的Web应用。书中第12到17章的内容涵盖了以下几个关键知识点: 1. **Struts 2框架**: -...
总的来说,Struts2+Hibernate+Spring整合涉及多个jar包的配合使用,每个jar包都在整个应用程序架构中扮演着重要的角色。理解并正确配置这些jar包,能够帮助开发者构建出高效、可维护的Java Web应用。
在Struts2+Spring4整合中,Spring负责管理Action类及其依赖,使得应用更易于测试和解耦。 **Hibernate5** 是一个对象关系映射(ORM)框架,简化了数据库操作。它将Java对象与数据库表进行映射,使得开发者可以使用...
5. **集成Struts1和Spring2**:使用Spring的Struts插件,将Spring管理的Bean注入到Struts的Action中,实现依赖注入。 6. **集成Spring2和Hibernate2**:在Spring的配置文件中,配置Hibernate的SessionFactory,并...
这个"Struts2+Hibernate+Spring整合开发深入剖析与范例应用02"的学习资源,很可能是关于这三大框架集成使用的详细教程或案例集。02这个文件名可能代表系列的第二部分,意味着它可能在前一部分的基础上进一步深入讲解...
在SSH整合中,Spring通常用来管理Struts2的Action实例,以及Hibernate的数据访问对象(DAO)。项目的ApplicationContext配置文件(如applicationContext.xml)会定义bean的声明和依赖关系。 在这个简单的登录页面...
在Struts2+Spring的整合中,Spring主要负责管理Bean,包括Struts2的Action,实现业务逻辑的解耦。 **iBatis** 是一个持久层框架,它简化了Java与数据库的交互,通过XML或注解方式配置SQL语句,将SQL与Java代码分离...
Struts2与Spring3的整合,使得我们可以利用Spring来管理Struts2的Action,从而实现依赖注入,提高代码的可测试性和可维护性。 Spring3则是企业级应用的全面解决方案,包括IoC(Inversion of Control,控制反转)和...
2. Spring 作为整体的容器,管理所有组件的生命周期,包括Struts2的Action、Hibernate的数据访问对象(DAO)以及DWR的远程接口。Spring的DI特性使得各组件之间的依赖关系得以解耦。 3. Hibernate 作为持久层框架,...