`
balaschen
  • 浏览: 192206 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

零侵入实现Strtus1.3和Spring的集成

    博客分类:
  • MVC
阅读更多
以前都是用webwork,最近因为遗留项目的维护,捣腾起struts1.x,原先的代码到处充斥着ApplicationContext.getBean的代码,实在没法容忍,上网找了struts和spring集成的例子,基本上都是struts1.3以前版本的代码,很不优雅。struts1.3和之前版本相比,使用command-chain来处理请求,有点类似于webwork的拦截器,下面介绍下整个实现思路,欢迎批评指正。

1、首先需要一个ServletContextListener,用于获取Spring的ApplicationContext实例(使用Quake Wang的jert的代码),具体请参考附件源码

2、定义ComponentAutowireInterceptor实现ActionCommon接口,以实现spring bean的注入,这里为了方便,直接从CreateAction继承:
/**
 * $Revision: 1.0 $
 * Created: 2007-8-17
 * $Date: 2007-8-17 $
 * 
 * Author: Keven Chen
 */
package struts.demo.command;

import org.apache.struts.action.Action;
import org.apache.struts.chain.commands.servlet.CreateAction;
import org.apache.struts.chain.contexts.ActionContext;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.comwave.webui.core.container.Application;

/**
 * @author Keven Chen
 * @version $Revision 1.0 $
 *
 */
public class ComponentAutowireInterceptor extends CreateAction {
	
	protected Action createAction(ActionContext context, String type) throws Exception {
		Action action = super.createAction(context, type);
		if(action !=null){
			Application.getInstance().getContainer().autowireComponent(action);
			System.out.println("装配Action");
		}
		return action;
	}

}


3、配置web.xml和chain-config.xml配置片段(完整配置请参考附件代码)

web.xml
....
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring/applicationContext*.xml</param-value>
	</context-param>
	
	<listener>		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<listener>		<listener-class>com.comwave.webui.core.web.listener.DefaultApplicationSetupListener</listener-class>
	</listener>
	
	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
		<init-param>
			<param-name>config</param-name>
			<param-value>struts/struts-config.xml</param-value>
		</init-param>
		<init-param>
			<param-name>chainConfig</param-name>
			<param-value>struts/chain-config.xml</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
....

chain-config.xml
....
     <!--command className="org.apache.struts.chain.commands.servlet.CreateAction"/-->

     <command className="struts.demo.command.ComponentAutowireInterceptor"/><!--替换原先的CreateAction-->
....


Struts的Action无需实现任何接口,也不需要特别的配置,就可以自动实现spring bean的注入。
  • struts-spring.zip (13.4 KB)
  • 描述: 缺少struts和spring的lib,需要自行加入
  • 下载次数: 257
分享到:
评论
1 楼 balaschen 2007-08-17  
怎么没人来拍砖?

相关推荐

    Strtus2+spring+hibernate

    在"Strtus2+spring+hibernate"的整合中,Spring通常作为整个应用的中心,负责管理其他组件(如Struts2的Action和Hibernate的SessionFactory)。Struts2负责接收HTTP请求,调用Spring管理的业务服务,这些服务通常会...

    Strtus1.3整合Hibernate内部留言板

    这是struts1.3结合hibernate3.2综合整合的小型案例,只有两个模块的功能,分别是用户登录模块,用户发帖子模块。 业务逻辑并不复杂,但是却是一个学习hibernate和struts的不错学习案例。

    strtus2+spring

    这个"strtus2+spring 订票系统"是结合了这两个框架的一个实例,用于实现在线订票功能。下面我们将深入探讨 Struts2 和 Spring 框架以及它们在构建订票系统中的关键作用。 **Struts2 框架** Struts2 是一个基于 ...

    struts+spring集成

    在集成过程中,通常会用Spring来管理Struts中的Action类,实现Action的依赖注入,从而提高代码的可测试性和解耦性。下面将详细讲解这个集成过程中的关键知识点: 1. **依赖注入**:Spring通过DI机制,可以在运行时...

    用户管理_SSH(Strtus2+hibernate+spring)

    利用Strtus2+hibernate+spring实现的用户管理小项目(内含mysql数据库脚本和所需的所有jar包),另外里面自己也做了一些封装,这个项目的说明可以参考我发表的博客"对SSH的一些认知

    strtus2+spring3+ibaties2 项目整合 登录管理

    - `LoginService.java`和`LoginServiceImpl.java`:Spring的服务接口和实现。 - `UserMapper.java`和`UserMapper.xml`:iBatis的Mapper接口和SQL映射文件。 - `login.jsp`、`success.jsp`和`error.jsp`:登录表单...

    Spring DM集成Strtus2(一)

    集成Spring DM与Struts2的目的是为了充分利用两者的优势,例如,通过Spring DM实现对Struts2组件的依赖注入,使得配置更加简洁,同时利用OSGi的模块化特性,可以单独更新和管理Struts2的各个部分,而不会影响到整个...

    ibatis与strtus2集成的简单示例

    在Java Web开发中,Struts2和iBatis是两个非常重要的框架。Struts2作为MVC(Model-View-Controller)架构的一部分,主要用于处理HTTP请求...在实际项目中,还可以结合Spring进行更深入的整合,实现依赖注入和事务管理。

    struts1+spring

    10. **测试**:结合 Spring 的 Test 模块和 Mock 对象,可以方便地对 Struts1 和 Spring 组件进行单元测试和集成测试,确保代码质量。 了解并熟练掌握这些知识点,对于构建稳定、高效的企业级应用至关重要。在实际...

    strtus2+Spring+hibernate整合通过实体类生成数据库表

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用是构建企业级应用的常见方式。本文将详细讲解如何通过这三个框架的整合,利用实体类生成数据库表。 Struts2作为MVC(Model-View-Controller...

    struts2与spring整合需要的struts的插件struts2-spring-plugin-2.3.8.jar

    这个插件是在strtus2和spring集成必备的一个插件

    Spring和strtus的xml文件的修改

    在Spring与Struts框架的整合中,通过修改`Struts-config.xml`、`applicationContext.xml`以及使用`DelegatingActionProxy`,可以实现Struts Action与Spring管理的bean之间的无缝集成。这种整合方式充分利用了Spring...

    一个很简单的spring+struts2+mybatis的小例子,仅供学习使用

    在本例中,Spring可能被用作依赖注入(DI)容器,负责创建和管理对象的生命周期,同时也可以作为AOP(面向切面编程)的平台,实现如事务管理等功能。 Struts2则是一个MVC(Model-View-Controller)框架,用于处理...

    spring_struts2_hibernate_mysql集成

    标题中的"spring_struts2_hibernate_mysql集成"指的是在Java Web开发中,将Spring、Struts2、Hibernate这三大主流框架与MySQL数据库进行整合。这是一个常见的企业级应用开发模式,用于构建高效、可维护的Web应用程序...

    strtus spring Hibernate 个人总结

    Struts、Spring 和 Hibernate 是 Java 开发中常用的三大框架,它们各自负责应用程序的不同层面:Struts 主要处理 MVC 模式中的 Controller 层,Spring 提供了全面的 IoC(Inversion of Control,控制反转)和 AOP...

    SSH框架最新版本整合JAR包Strtus2 2.5.10.1+Spring4.3.9+Hibernate5.2.10(SSH-JAR)

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个压缩包提供的是SSH框架的最新版本——Struts2 2.5.10.1、Spring 4.3.9以及Hibernate 5.2.10的集成JAR包,适用于...

    Strtus2+Hibernate+spring常用开发包

    Struts2、Hibernate和Spring是Java企业级应用开发中的三...在给定的“Strtus2+Hibernate+spring常用开发包”中,可能包含了这三个框架的库文件、配置示例、教程文档等资源,可以帮助开发者快速搭建和理解这个集成环境。

    struts2+spring+hibernate采购项目

    以前在公司基于struts2+spring+hibernate+jqgrid做的一个...1.3、 预期读者和阅读建议 本需求规格说明书的读者范围为:  公司领导:组织需求评审、确定需求方向;  开发小组:项目经理、程序员、测试等工作的基准。

    struts2+spring2+ibatis简单登录例子

    - UserDao.java和UserDaoImpl.java:DAO接口和实现,分别定义了登录验证的方法。 - login.jsp:登录页面,用于用户输入信息。 - success.jsp或error.jsp:登录成功或失败后的显示页面。 理解这个简单的登录例子,有...

    SSI(Struts2,Spring,Ibatis)集成实现用户增删改查

    加快了开发速度,但是也有一些不足之处,比如由于三种框架的配置文件较多,也给我们带来了一些不便,特别是对于较小的应用来说更是如此,本文主要是对Strtus2、Spring、iBatis三个开源框架进行一个集成

Global site tag (gtag.js) - Google Analytics