Struts是一个Web层框架,需要考虑如何获得业务逻辑接口。一个较好的设计就是首先设计一个BaseAction,其中定义获得业务逻辑接口的方法,其他所有Action继承了BaseAction,方便地调用业务逻辑接口。
java 代码
- public class BaseAction extends Action {
-
- private static final UserService userService = new UserServiceImpl();
-
- public UserService getUserService() {
- return userService;
- }
- }
这种以静态的方法持有业务逻辑接口的引用的设计并不优雅。
使用Spring的IOC来配置管理这些逻辑组件,则完全可以实现一个优雅的多层应用程序。
在Spring中有两种方法集成Struts
(1)通过一个Spring提供的一个Struts插件来初始化Ioc容器。
xml 代码
- <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn" >
- <set-property property="contextConfigLocation"
- value="/WEB-INF/applicationContext.xml"/>
- <!---->plug-in>
注意:我们要将Spring的配置文件放置在/WEB-INF/目录下,并且如果不是使用Spring的默认命名(
applicationContext.xml),
就必须在以上位置添加描述。否则,会出现404错误。在这里,配置文件是使用默认的名称,但我添加了描述。
然后,我们将BaseAction修改,使其继承ActionSupport(org.springframework.web.struts.ActionSupport)。
java 代码
- public class BaseAction extends ActionSupport {
-
- public UserService getUserService(){
- return (UserService)getWebApplicationContext().getBean("userService");
- }
- }
ActionSupport是Spring提供的一个继承自Action的抽象类。
它有一个很重要的方法
getWebApplicationContext(),通过该方法,我们可以获得当前的Ioc容器的引用ApplicationContext,一旦获得了该引用,我们就可以获得Spring的IOC容器中的所有的Bean。
此外,我们还要在Spring的配置文件applicationContext.xml中配置bean(userService)
xml 代码
- xml version="1.0" encoding="UTF-8"?>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
-
- <bean id="userService" class="org.justin.service.impl.UserServiceImpl" />
-
- beans>
该方法的好处是,只要合理的抽象出一个基类BaseAction,只要修改BaseAction使其继承ActionSupport就可以实现Spring与Struts的集成,而无需修改任何Action。
(2)另一种方法就是就是将Struts中的所有Action都作为SpringIOC容器中的Bean来管理。
通过Spring提供的DelegatingRequestProcessor来替代Struts的默认派发器,以便让Spring能截获派发给Action的请求。
这种方式下,业务逻辑组件通过依赖注入的方式在Spring的Ioc容器中就配置完毕了。
我们往struts-config.xml中添加一条
xml 代码
- <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />
xml 代码
- <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn" >
- <set-property property="contextConfigLocation"
- value="/WEB-INF/applicationContext.xml"/>
- </plug-in>
Spring提供的Struts PlugIn仍负责启动Spring容器,而
DelegatingRequestProcessor可以让Spring接管请求,
从而将请求派发到Ioc容器管理的Action实例。因此,我们还必须在Spring的配置文件中声明每一个Action类,其name属性
和Struts配置文件中的path要完全一致。
xml 代码
- <bean name="/login" class="struts.action.LoginAction">
- <property name="userService" ref="userService"></property>
- </bean>
-
- <bean name="/logout" class="struts.action.LogoutAction">
- <property name="userService" ref="userService"></property>
- </bean>
其实在struts-config.xml中我们就不需要在配置action的type属性了。
这种配置最大的不便就是所有的Action必须同时在Struts和Spring中各配置一次。
分享到:
相关推荐
集成Spring和Struts的主要目标是让Spring负责业务逻辑和数据访问层,而Struts处理视图和控制器。以下是一些关键步骤: 1. **配置Spring**: - 创建Spring配置文件,例如`applicationContext.xml`,定义bean和其...
同时,为了集成 Spring,需要配置 Struts2-Spring 插件,这样 Struts2 就能利用 Spring 管理的 Bean。 4. **Action 类**:Action 类通常作为 Struts2 处理请求的入口,它可以从 Spring 容器中注入所需的依赖。通过...
- Spring与Struts2集成,Spring可以作为Struts2的Action的依赖注入容器,通过Spring的ApplicationContext获取服务层对象,实现业务逻辑处理。 - Struts2与Hibernate集成,通常在Action中通过SessionFactory获取...
下面我们将详细探讨集成Spring和Struts2所需的jar包及其作用。 1. **Spring Framework**: - `spring-beans.jar`: 包含了Spring的核心组件,如Bean工厂和依赖注入。 - `spring-context.jar`: 提供了上下文相关的...
5. **拦截器集成**:可以使用Spring的AOP拦截器与Struts 2的拦截器相结合,增强应用的功能。 6. **测试与调试**:整合完成后,进行单元测试和集成测试,确保所有组件协同工作。 整合Spring和Struts 2可以使开发...
Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,以及对其他框架的良好集成,而Struts则是一个专注于MVC模式的轻量级框架。在整合两者时,主要目标是让Spring管理Struts的Action实例,这样可以利用Spring...
extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json...
通过Action类和拦截器,可以实现与Spring的无缝集成,同时也可以利用Spring的缓存功能,将频繁访问的数据存储在Redis中。 3. **Hibernate框架**:Hibernate是Java领域的一个对象关系映射(ORM)框架,它简化了数据库...
这种方式更适用于那些需要深度集成Spring特性的场景,比如AOP或更复杂的依赖注入需求。 ### 结论 Spring与Struts的整合提供了灵活且强大的Web应用开发解决方案。无论是通过ContextLoaderPlugin还是继承...
标题中的"Spring集成struts以及hibernate jar包"指的是在Java Web开发中,将Spring框架与Struts2和Hibernate框架进行整合的过程。这通常是为了构建一个完整的MVC(Model-View-Controller)架构,其中Spring负责依赖...
Maven搭建spring_struts2_Hibernate项目源码,包括数据库,博客地址:http://blog.csdn.net/fengshizty/article/details/43794911
### Spring集成Struts与Hibernate详解 #### Spring集成Struts **背景介绍** 随着Java技术的发展,Struts作为最早的MVC框架之一,在Java EE领域中占据了重要地位。虽然随着时间的推移,新的框架和技术不断涌现,但...
下面,我们将深入探讨Spring与Struts集成方案二的关键知识点。 首先,集成的主要目的是将Spring的业务逻辑管理与Struts的视图和控制层结合起来。在方案二中,通常会使用Spring作为应用程序的核心框架,负责管理Bean...
在IT行业中,集成Spring、Struts和iBatis与MySQL是构建企业级Java Web应用程序的常见选择。这个项目集成了Spring 2.5.5、Struts 2.1.6、iBatis 2.3.4以及MySQL 5.1数据库,使用IntelliJ IDEA 9作为开发环境。下面将...
本篇将详细讲解Spring与Struts的集成方式,主要以第二种集成方式为例。 首先,集成的准备工作包括添加必要的库到项目中。在Spring与Struts集成时,我们需要Spring的核心库、Struts的主库以及相应的XML配置文件。在...
在"mongo集成spring struts2 json velocity"这个项目中,我们将看到如何将这些技术整合到一起,创建一个功能丰富的Web应用程序。 首先,MongoDB的集成意味着项目会利用其NoSQL特性和文档存储的优势。Spring Data ...
下面我们将详细探讨Spring与Struts1.2的整合集成及其核心概念。 1. **Spring框架介绍** Spring是一个全面的后端开发框架,包括了数据访问、事务管理、远程调用、AOP等模块。它通过DI和AOP简化了对象的创建和管理,...
集成Spring和Struts2的步骤主要包括以下几个方面: 1. **配置Struts2-Spring插件**:Struts2提供了一个Spring插件,它允许Struts2的动作类(Action)从Spring容器中获取依赖。要在`struts.xml`配置文件中添加以下...
集成Hibernate + Spring + Struts + Mybatis,jdk 32的版本