为了在Struts中加载Spring context,需要在struts-config.xml文件中加入如下部分:
<struts-config>
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>
</struts-config>
通过Struts的plug-in在Struts和Spring之间提供了良好的结合点。通过plug-in我们实现了Spring context的加载,不过仅仅加载Spring context并没有什么实际的意义,还应该经过配置将Struts的Action交给Spring容器进行管理。
<action-mappings>
<action path="/login"
type="org.springframework.web.struts.DelegatingActionProxy"
name="loginForm">
<forward name="success" path="/main.jsp" />
<forward name="failure" path="/login.jsp" />
</action>
在form bean这个节点上与传统的Struts配置没有什么区别,而在Action上面则发生了变化。在传统的action节点上type属性写入action类的完整类名,而和Spring结合后在这点上是使用了Spring提供的DelegatingActionProxy作为action的type属性,DelegatingActionProxy同样是org.apache.struts.action.Action的一个子类,它将把调用请求转交给真正的Action实现。通过这样的方式,Spring获得了Action实例的管理权,它将对Action进行调度,并为Struts提供所需的Action实例。这样,就可以将Action看作是Spring的一个bean,它就可以享受Spring的所有服务,如依赖注入、实例管理、事务管理等。
在applicationContext.xml中相应的配置如下的节点:
<beans>
.......
<bean name="/login" class="net.xiaxin.action.LoginAction"
singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
</beans>
最后这个bean的配置是关键,这个名为“/login”的bean与Struts中的
<action path="/login" ……>
……
</action>节点相对应,这样,Spring Bean Name与Struts Action Path相关联,当Struts加载对应的Action时,DelegatingActionProxy就根据传入的path属性,在Spring Context寻找对应bean,并将其实例返回给Struts。与此同时,还可以看到,"/login" bean 中包含了一个userDAO 引用,Spring 在运行期将根据配置为其提供userDAO 实例,以及围绕userDAO 的事务管理服务。这样一来,对于Struts 开发而言,我们既可以延续Struts 的开发流程,也可以享受Spring 提供的事务管
理服务。而bean 的另外一个属性singleton="false",指明了Action 的实例获取方式为每次重新创建。这也解决了Struts中令人诟病的线程安全问题。
至此,SS组合已经将Struts MVC以及Spring中的Bean管理、事务管理融为一体。如
果算上userDAO 中的Hibernate 部分,我们就获得了一个全面、成熟、高效、自顶而下的
Web 开发框架。
- 浏览: 12635 次
- 性别:
- 来自: 杭州
相关推荐
这个"struts整合spring开发实例(二)"将继续上一部分的讲解,旨在帮助开发者理解这两个流行框架协同工作的机制。 Struts是一个强大的MVC(模型-视图-控制器)框架,用于构建可维护性高、结构清晰的Java Web应用。而...
总的来说,"Struts整合Spring开发实例(三)"可能涵盖了Spring和Struts的深度集成,包括Action的Spring管理、依赖注入、AOP应用以及事务管理等方面。这不仅增强了应用的功能,也提高了代码的可维护性和可测试性。在...
整合Spring** - **导入Spring的jar包**:首先,导入`spring.jar`,这是Spring框架的基本库。根据项目需求,可能还需要其他Spring模块的jar包。 - **创建applicationContext.xml**:在`WEB-INF`目录下创建`...
Struts2 和 Spring 整合是Java开发中常见的实践,主要目的是为了利用Spring的强大功能,如依赖注入(DI)和面向切面编程(AOP),同时保持Struts2的MVC架构的优势。以下是对整合过程的详细说明: 首先,Spring框架...
Struts和Spring是两个在Java Web开发中广泛使用的框架,它们各自解决了一部分问题,而将两者整合可以进一步提升应用的灵活性和可维护性。Struts主要负责MVC(Model-View-Controller)架构中的控制层,而Spring则是一...
在整合Spring与Struts时,可以使用Spring提供的ActionSupport类来简化Spring中的Action的开发,或者通过覆盖Struts的RequestProcessor类以及将动作管理委托给Spring来实现更深层次的整合。同时,利用拦截器对Struts...
Struts2整合Spring和JPA是企业级Java应用开发中常见的技术组合,它们分别负责不同的职责:Struts2作为一款成熟的MVC框架,主要用于处理Web层的请求与响应;Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和...
首先,整合Spring到Web应用中需要以下步骤: 1. **添加Spring库**:在项目中引入Spring框架所需的JAR文件,这些文件通常包括Spring的核心库、AOP库和Web相关的库。 2. **配置web.xml**:在`web.xml`中添加一个监听...
整合Struts与Spring的主要目的是利用Spring的强大功能来增强Struts的控制层,提高代码的可测试性和可维护性。 在整合Struts和Spring的过程中,首先需要确保你的项目环境中包含了这两个框架的兼容版本。对于本例中的...
在本文中,我们将探讨如何在MyEclipse环境中整合Spring和Struts2框架,这对于初学者来说是一个重要的学习步骤。整合这两个框架可以创建一个强大的MVC架构,方便地管理业务逻辑和服务层。以下是如何进行环境搭建和...
Struts+Spring+Hibernet整合例子 Struts+Spring+Hibernet整合例子 Struts+Spring+Hibernet整合例子 Struts+Spring+Hibernet整合例子 Struts+Spring+Hibernet整合例子
通过以上步骤,一个基本的Struts、Spring和Hibernate整合的应用就搭建完成了。这个整合的关键在于Struts处理HTTP请求,Spring管理业务对象和依赖,而Hibernate则处理数据库操作。这样的架构可以实现松耦合,便于代码...
SSH整合,全称为Struts、Spring和Hibernate的集成,是一种常见的Java Web开发框架组合,用于构建高效、可维护的企业级应用程序。在这个例子中,我们看到的是一个基于SSH的用户注册功能的实现,使用的开发工具是...
用DelegatingRequestProcessor和DelegatingActionProxy两种方法实现struts和spring的整合,不同的地方就在struts-config.xml文件中,当前文件中DelegatingRequestProcessor是注释的。
struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码
SSM框架整合是Java开发中常见的技术栈,它由三个主要部分组成:Struts2、Spring和MyBatis。这三者结合在一起,为开发者提供了一个高效、灵活且功能强大的后端开发解决方案。 首先,Struts2是一个基于MVC(Model-...
整合Struts、Spring和Hibernate可以构建出高度模块化的应用,提高开发效率和代码质量。然而,随着Java EE技术的发展,现代Web应用更多地转向Spring Boot、Spring MVC和MyBatis等更现代的解决方案,它们在易用性、...
【SSH整合】指的是Struts2、Spring和Hibernate这三个开源框架的集成应用,它们在JavaEE企业级开发中占据着重要地位。Struts2是一个MVC框架,负责处理用户请求和控制应用程序流程;Spring是一个全面的后端解决方案,...
**Spring整合Struts** Spring整合Struts主要有三种方式: 1. **使用Spring的ActionSupport**:Action类直接继承自Spring的ActionSupport,通过`super.getWebApplicationContext()`获取Spring上下文,然后通过`...