论坛中用Struts+Spring的人不少,以前的帖子也有问过Struts+Spring的整合方式。前面的帖子中ReadOnly老大曾经提到过Spring2.0新增加的一个整合方式。今天简单把这几种整合方式小结一下。
在这之前,别忘了用一下Google大法,一般早有人会对类似的问题做过回答,果然,在ibm developworks上有一篇文章,一下子涵盖了三种整合方式,有兴趣的xdjm可以参考下面的链接:http://www-128.ibm.com/developerworks/cn/java/j-sr2.html。
下面着重谈一下Spring2.0新增的一个整个方式,我感觉挺不错,可以完全将Struts的配置和Spring的配置分离。具体步骤如下:
1. 编写Spring的配置文件applicationContext.xml,简单起见,仅仅定义一个Service对象。
引用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="userService" class="com.bearingpoint.gdc.zero.service.impl.UserServiceImpl" />
</beans>
这看上去就和普通的Spring配置文件没有任何分别。
2. 编写Struts的配置文件struts-config.xml,注意其中的controller的配置,用到了Spring2.0的新特性。
引用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config
PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"
>
<struts-config>
<action-mappings>
<action path="/addUser"
type="com.bearingpoint.gdc.zero.action.user.AddUser"
scope="request"
>
<forward name="success" path="/index.jsp" />
</action>
</action-mappings>
<controller processorClass="org.springframework.web.struts.AutowiringRequestProcessor" />
</struts-config>
3. 然后为你的Struts的Action注入你需要的Service
引用
private UserService userService;
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
User user = new User();
userService.addUser(user);
return mapping.findForward("success");
}
/**
* @param userService
* The userService to set.
*/
public void setUserService(UserService userService) {
this.userService = userService;
}
看上去你好像啥都没做,而事实上,注入工作已经由AutowiringRequestProcessor自动完成。
4. 编写web.xml进行测试。
引用
?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--如果你采用byName方式,去掉下面的注释--->
<!--context-param>
<param-name>autowire</param-name>
<param-value>byName</param-value>
</context-param-->
<servlet>
<servlet-name>struts</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/classes/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>struts</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
最后,启动Jetty进行测试,顺利运行通过!
看上去如此简单,配置起来也没有什么很特别的地方,只是按照常规来写你的Spring和Struts的配置文件就好了。
不过在这里还是说一下其中的要注意两个问题:
1. 这种autowire的注入支持两种不同的方式,分别是byName和byType,默认是byType。我想这对于绝大多数开发者来说是够了。 对于byName的形式,就在Web.xml中添加
<context-param>
<param-name>autowire</param-name>
<param-value>byName</param-value>
</context-param>
即可
2. 鉴于在
http://www.iteye.com/topic/15057中所提到的OpenSessionInView模式的失效的问题。我仔细看了一下Spring的源码。对于这种autowire的整合方式,不推荐在struts-config.xml文件中配置ContextLoaderPlugIn,而是采用web.xml中的ContextLoaderListener来加载Spring的初始化配置。否则,你的OpenSessionInView模式可能会失效。
3.可以创建一个BaseAction类...把Setter都放到里面去
4.对于Aciton 的execute方法以外的方法调用,spring将不能完成自动注入。
分享到:
相关推荐
12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java ...
【SSH整合】指的是Struts2、Spring和Hibernate这三个开源框架的集成应用,它们在JavaEE企业级开发中占据着重要地位。Struts2是一个MVC框架,负责处理用户请求和控制应用程序流程;Spring是一个全面的后端解决方案,...
其次,Spring4是Spring框架的第四个主要版本,是一个全面的Java企业级应用开发框架。它不仅提供了依赖注入(DI)和面向切面编程(AOP)的能力,还包含了许多其他模块,如数据访问/集成、Web、测试等。Spring4加强了...
在"第27讲--Struts与Spring集成方案1(Struts集成Spring)"中,我们主要探讨如何将Struts2与Spring进行整合。集成的主要目的是利用Spring的强大功能来管理Struts2中的Action类,从而实现更灵活的依赖注入和更好的控制...
集成Spring和Struts有多种方法,常见的有以下两种: 1. **基于Servlet Filter的集成**: Spring通过实现Servlet Filter,可以在请求到达Struts之前进行预处理,比如验证用户、注入依赖等。然后,Filter将请求转发...
12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java ...
叶健毅的《JAVA EE Eclipse struts hibernate spring 整合应用案例》(第二版)提供了源代码,帮助读者更直观地理解这些技术的集成过程。 首先,Eclipse是一款强大的Java集成开发环境(IDE),它为开发者提供了丰富...
在"Spring+Struts的集成(第一种方案)"中,我们通常指的是基于Servlet Filter的集成方式,这种方案将Spring作为应用的核心容器,而Struts作为MVC框架处理HTTP请求。下面我们将详细介绍这个集成方案的具体步骤和关键...
本光盘是《整合Struts+Hibernate+Spring应用开发详解》一书的配书光盘,书中的代码按章存放, 即第二章所使用的代码放在codes文件夹的02文件夹下,依次类推。 本光盘根目录下有11个文件夹,其内容和含义说明如下: ...
Spring整合Struts Spring与Struts的整合主要涉及以下几个方面: ##### 3.1 三个小窍门 为了有效地整合Spring和Struts,可以采用以下三个技巧: 1. **使用Spring的ActionSupport**:Spring提供了ActionSupport类...
### Struts2.0、Spring2.0与Hibernate3.0整合开发快速入门知识点解析 #### 一、Struts2.0与Hibernate3.0整合基础 **知识点1:Struts2.0简介** - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于...
### Struts2与Spring整合开发教程关键知识点 #### 1. Struts2基本介绍与环境搭建 - **Struts2概述**: - Struts2是Apache Struts框架的下一代版本,它是一种开源的Web应用框架,用于构建企业级Java Web应用程序。...
在本资源中,我们主要关注的是使用Eclipse集成开发环境(IDE)进行Web应用程序的开发,特别是集成Struts、Hibernate、Spring和JBPM这四个关键的技术框架。这四个框架是Java企业级应用开发中的核心组件,它们分别负责...
5. **Struts与Spring整合**: 使用Spring的Struts插件,将Action实例化的工作交给Spring,通过`org.springframework.web.struts.DelegatingActionProxy`实现。 通过SSH整合,开发者可以更专注于业务逻辑的实现,而不...
### Struts、Spring与Hibernate整合的四种方法 在企业级应用开发中,Struts、Spring与Hibernate这三种框架经常被组合使用,以构建强大的、可维护的Java Web应用程序。本文将详细介绍这三种技术如何整合,并重点阐述...
通过上述三种不同的整合方式,我们可以根据项目的具体需求选择最合适的方法来实现Spring和Struts框架的有效集成。每种方法都有其特点和适用场景,理解它们的工作原理可以帮助我们更好地设计和开发出高效、灵活的Java...
##### 第二部分:Struts2与Spring进行整合 **Step08:引入Spring框架** - 添加Spring的核心类库到项目中,包括spring-core、spring-context、spring-web、spring-webmvc等。 **Step09:配置Spring容器** - 创建...
在本资源中,我们关注的是"轻量级J2EE企业应用实战——Struts+Spring+Hibernate整合开发"的源码第五部分。这个主题涉及到Java企业级应用开发中的三个核心框架:Struts、Spring和Hibernate的集成使用。下面将详细阐述...
Struts2、Spring4和Hibernate4是Java Web开发中的三个核心框架,它们分别负责MVC模式中的表现层、业务层和服务层。SSH(Struts2、Spring、Hibernate)的整合是构建高效、灵活的企业级应用的常用方式。下面将详细阐述...
这个"Struts2+Hibernate+Spring整合开发深入剖析与范例应用02"的学习资源,很可能是关于这三大框架集成使用的详细教程或案例集。02这个文件名可能代表系列的第二部分,意味着它可能在前一部分的基础上进一步深入讲解...