以前都是用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继承:
-
-
-
-
-
-
-
-
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;
-
-
-
-
-
-
-
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;
- }
-
- }
/**
* $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>
- ....
....
<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-->
- ....
....
<!--command className="org.apache.struts.chain.commands.servlet.CreateAction"/-->
<command className="struts.demo.command.ComponentAutowireInterceptor"/><!--替换原先的CreateAction-->
....
Struts的Action无需实现任何接口,也不需要特别的配置,就可以自动实现spring bean的注入。
原文摘自:http://balaschen.iteye.com/blog/113507
分享到:
相关推荐
Struts1.3、Spring4.x和Hibernate4.x是经典的Java Web开发框架组合,被称为SSH。这个项目展示了如何将这三个框架整合起来,实现一个完整的书籍管理应用,包括书籍的增加、删除、修改和查询功能,并且包含了分页展示...
Spring的DAO支持可以帮助我们更方便地与数据库交互,而Spring MVC可以与Struts1.3协作,实现更灵活的Web应用结构。 3. Hibernate3.3: Hibernate是一个流行的Java ORM(对象关系映射)框架,允许开发者使用面向对象...
本示例代码涉及的是一个经典的技术栈:Ibatis2.3、Struts1.3和Spring2.5的整合。这三个框架各自都有其独特的功能和优点,组合在一起能够提供灵活的数据访问、高效的MVC架构以及全面的应用管理。 Ibatis,作为一款轻...
struts1.3+spring2.5+ibatis2.3.4整合
Struts1.3_Spring3.0_Hibernate3.3示例是一个综合性的项目,它展示了如何在Java Web开发中整合三个流行的技术框架:Struts1.3、Spring3.0和Hibernate3.3。这些框架分别负责MVC(Model-View-Controller)架构、依赖...
9. **国际化与本地化**:Struts1.3支持多语言环境,通过资源包(properties文件)可以轻松实现应用的国际化。 10. **ActionServlet**:作为Struts1.3的核心组件,ActionServlet负责拦截HTTP请求,根据配置文件将...
1. **配置Struts1.3**:在`struts-config.xml`中定义Action及其对应的ActionForm,设置拦截器,以及与Spring的集成配置。 2. **配置Spring2.5**:创建`applicationContext.xml`,定义Bean,包括业务服务、DAO及数据...
Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+...
Struts1.3、Spring2.5和Hibernate3是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。Struts1.3作为MVC(Model-View-Controller)框架,负责处理用户请求并转发到相应的业务逻辑;...
### Struts1.3+Spring3.0+Hibernate3.3+DWR2.X框架集成文档v1.4 #### 整合Spring与Struts ##### 1. 在web.xml中进行Struts和Spring的配置 为了实现Struts与Spring框架的集成,在`web.xml`文件中需要进行以下配置...
9. **Tiles框架集成**: 虽非基础部分,但Struts1.3可与Tiles框架集成,实现页面布局的模块化和复用,提高页面设计效率。 10. **预定义的Action和Interceptor**: Struts1.3提供了一些预定义的Action和支持拦截器,如...
Struts1.3、Spring2.5和JPA(基于Hibernate)是Java Web开发中三个重要的框架,它们的集成使用可以构建出强大的企业级应用。这个"Struts1.3+spring2.5+JPA(hibernate) demo"提供了一个实践性的学习案例,帮助初学者...
Struts1.3 jar包是Apache软件基金会的Jakarta Struts项目中的一个核心组件,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。这个框架极大地简化了开发人员在构建动态、数据驱动的Web应用程序...
Struts1.3、Spring2.5 和 JPA 是三个在Java Web开发中非常重要的框架。它们各自负责不同的职责,组合使用可以构建出高效、松耦合的企业级应用。 Struts1.3 是一个用于构建MVC(Model-View-Controller)架构的开源...
软件架构: EJB3.0 + Struts1.3 + Spring2.0 + JPA 应用服务器: Jboss5.1 数据库用: Oracle9i 部署前将 demo-service.xml和oracle-ds.xml copy到jboss deploy目录下,配置到你的环境下即可 -- Create sequence ...
内含Struts1.3 API、Struts2.0 API、Struts1.3标签、Hibernate3.1教程、Hibernate3.1API、Spring3.0 API、Spring3.1API。SSH应有尽有,API均是CHM格式,方便使用。教程为pdf格式。
Struts1.3、Spring2.5 和 Hibernate3.3 是经典的 Java Web 开发框架组合,它们在企业级应用中广泛使用。这个组合被称为“SSH”(Struts-Spring-Hibernate),它允许开发者构建可扩展且松耦合的后端系统。在本项目中...
这个"struts1.3.jar"文件是Struts 1.3版本的核心库,它集成了框架的各种组件,使得开发者能够构建基于Model-View-Controller (MVC)设计模式的Web应用。以下是关于Struts 1.3框架及其核心库的一些关键知识点: 1. **...