`
justin8335
  • 浏览: 28809 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

集成Spring与Struts

阅读更多
Struts是一个Web层框架,需要考虑如何获得业务逻辑接口。一个较好的设计就是首先设计一个BaseAction,其中定义获得业务逻辑接口的方法,其他所有Action继承了BaseAction,方便地调用业务逻辑接口。

java 代码
 
  1. public class BaseAction extends Action {  
  2.   
  3.     private static final UserService userService = new UserServiceImpl();  
  4.   
  5.     public UserService getUserService() {  
  6.         return userService;  
  7.     }  
  8. }  

这种以静态的方法持有业务逻辑接口的引用的设计并不优雅。
使用Spring的IOC来配置管理这些逻辑组件,则完全可以实现一个优雅的多层应用程序。

在Spring中有两种方法集成Struts


(1)通过一个Spring提供的一个Struts插件来初始化Ioc容器。
xml 代码
 
  1. <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn" >  
  2.   <set-property property="contextConfigLocation"  
  3.      value="/WEB-INF/applicationContext.xml"/>  
  4. <!---->plug-in>  
注意:我们要将Spring的配置文件放置在/WEB-INF/目录下,并且如果不是使用Spring的默认命名(applicationContext.xml),
就必须在以上位置添加描述。否则,会出现404错误。在这里,配置文件是使用默认的名称,但我添加了描述。

然后,我们将BaseAction修改,使其继承ActionSupport(org.springframework.web.struts.ActionSupport)。
java 代码
 
  1. public class BaseAction extends ActionSupport {  
  2.       
  3.     public UserService getUserService(){  
  4.         return (UserService)getWebApplicationContext().getBean("userService");  
  5.     }  
  6. }  
ActionSupport是Spring提供的一个继承自Action的抽象类。
它有一个很重要的方法getWebApplicationContext(),通过该方法,我们可以获得当前的Ioc容器的引用ApplicationContext,一旦获得了该引用,我们就可以获得Spring的IOC容器中的所有的Bean。

此外,我们还要在Spring的配置文件applicationContext.xml中配置bean(userService)
xml 代码
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.     xmlns="http://www.springframework.org/schema/beans"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  6.   
  7. <bean id="userService" class="org.justin.service.impl.UserServiceImpl" />  
  8.   
  9. beans> 

该方法的好处是,只要合理的抽象出一个基类BaseAction,只要修改BaseAction使其继承ActionSupport就可以实现Spring与Struts的集成,而无需修改任何Action。

(2)另一种方法就是就是将Struts中的所有Action都作为SpringIOC容器中的Bean来管理。
通过Spring提供的DelegatingRequestProcessor来替代Struts的默认派发器,以便让Spring能截获派发给Action的请求。
这种方式下,业务逻辑组件通过依赖注入的方式在Spring的Ioc容器中就配置完毕了。

我们往struts-config.xml中添加一条
xml 代码
  1. <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" /> 

xml 代码
 
  1. <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn" >  
  2.   <set-property property="contextConfigLocation"  
  3.      value="/WEB-INF/applicationContext.xml"/>  
  4. </plug-in>  

Spring提供的Struts PlugIn仍负责启动Spring容器,而
DelegatingRequestProcessor可以让Spring接管请求,
从而将请求派发到Ioc容器管理的Action实例。因此,我们还必须在Spring的配置文件中声明每一个Action类,其name属性
和Struts配置文件中的path要完全一致。

xml 代码
 
  1. <bean name="/login" class="struts.action.LoginAction">   
  2.     <property name="userService" ref="userService"></property>  
  3. </bean>  
  4.   
  5. <bean name="/logout" class="struts.action.LogoutAction">   
  6.     <property name="userService" ref="userService"></property>  
  7. </bean>  

其实在struts-config.xml中我们就不需要在配置action的type属性了。

这种配置最大的不便就是所有的Action必须同时在Struts和Spring中各配置一次。
分享到:
评论

相关推荐

    Spring与Struts集成方式一

    集成Spring和Struts的主要目标是让Spring负责业务逻辑和数据访问层,而Struts处理视图和控制器。以下是一些关键步骤: 1. **配置Spring**: - 创建Spring配置文件,例如`applicationContext.xml`,定义bean和其...

    spring与struts2整合

    同时,为了集成 Spring,需要配置 Struts2-Spring 插件,这样 Struts2 就能利用 Spring 管理的 Bean。 4. **Action 类**:Action 类通常作为 Struts2 处理请求的入口,它可以从 Spring 容器中注入所需的依赖。通过...

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    - Spring与Struts2集成,Spring可以作为Struts2的Action的依赖注入容器,通过Spring的ApplicationContext获取服务层对象,实现业务逻辑处理。 - Struts2与Hibernate集成,通常在Action中通过SessionFactory获取...

    spring与struts2集成所需要的jar包

    下面我们将详细探讨集成Spring和Struts2所需的jar包及其作用。 1. **Spring Framework**: - `spring-beans.jar`: 包含了Spring的核心组件,如Bean工厂和依赖注入。 - `spring-context.jar`: 提供了上下文相关的...

    Spring与Struts 2整合.zip

    5. **拦截器集成**:可以使用Spring的AOP拦截器与Struts 2的拦截器相结合,增强应用的功能。 6. **测试与调试**:整合完成后,进行单元测试和集成测试,确保所有组件协同工作。 整合Spring和Struts 2可以使开发...

    整合Spring与Struts的几种方法

    Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,以及对其他框架的良好集成,而Struts则是一个专注于MVC模式的轻量级框架。在整合两者时,主要目标是让Spring管理Struts的Action实例,这样可以利用Spring...

    extjs异步树,多选树,json数据机构,集成spring,struts例子

    extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json...

    Spring+Struts2+hibernate+Redis整合

    通过Action类和拦截器,可以实现与Spring的无缝集成,同时也可以利用Spring的缓存功能,将频繁访问的数据存储在Redis中。 3. **Hibernate框架**:Hibernate是Java领域的一个对象关系映射(ORM)框架,它简化了数据库...

    Spring整合Struts

    这种方式更适用于那些需要深度集成Spring特性的场景,比如AOP或更复杂的依赖注入需求。 ### 结论 Spring与Struts的整合提供了灵活且强大的Web应用开发解决方案。无论是通过ContextLoaderPlugin还是继承...

    Spring集成struts以及hibernate jar包

    标题中的"Spring集成struts以及hibernate jar包"指的是在Java Web开发中,将Spring框架与Struts2和Hibernate框架进行整合的过程。这通常是为了构建一个完整的MVC(Model-View-Controller)架构,其中Spring负责依赖...

    Maven搭建spring_struts2_Hibernate_demo

    Maven搭建spring_struts2_Hibernate项目源码,包括数据库,博客地址:http://blog.csdn.net/fengshizty/article/details/43794911

    spring集成Struts与Hibernate

    ### Spring集成Struts与Hibernate详解 #### Spring集成Struts **背景介绍** 随着Java技术的发展,Struts作为最早的MVC框架之一,在Java EE领域中占据了重要地位。虽然随着时间的推移,新的框架和技术不断涌现,但...

    spring与struts集成方案二

    下面,我们将深入探讨Spring与Struts集成方案二的关键知识点。 首先,集成的主要目的是将Spring的业务逻辑管理与Struts的视图和控制层结合起来。在方案二中,通常会使用Spring作为应用程序的核心框架,负责管理Bean...

    Spring struts ibatis Mysql 集成

    在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集成时,我们需要Spring的核心库、Struts的主库以及相应的XML配置文件。在...

    mongo集成spring struts2 json velocity

    在"mongo集成spring struts2 json velocity"这个项目中,我们将看到如何将这些技术整合到一起,创建一个功能丰富的Web应用程序。 首先,MongoDB的集成意味着项目会利用其NoSQL特性和文档存储的优势。Spring Data ...

    Spring整合集成Struts1.2最简单例子

    下面我们将详细探讨Spring与Struts1.2的整合集成及其核心概念。 1. **Spring框架介绍** Spring是一个全面的后端开发框架,包括了数据访问、事务管理、远程调用、AOP等模块。它通过DI和AOP简化了对象的创建和管理,...

    spring_struts集成例子

    集成Spring和Struts2的步骤主要包括以下几个方面: 1. **配置Struts2-Spring插件**:Struts2提供了一个Spring插件,它允许Struts2的动作类(Action)从Spring容器中获取依赖。要在`struts.xml`配置文件中添加以下...

    集成Hibernate + Spring + Struts + Mybatis

    集成Hibernate + Spring + Struts + Mybatis,jdk 32的版本

Global site tag (gtag.js) - Google Analytics