- 浏览: 174892 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
yinvent:
谢谢,终于找到一个可以用的例子!
struts2学习之一简单范例 -
锅巴49:
学习了,不错.
使用 Spring 2.5 注释驱动的 IoC 功能 -
fooky:
你好,今天在配置spring secutiry3,想让系统先从 ...
spring security 配置文件小结(逐步深化到url级别) -
lj508:
你好啊 请教你个问题
我用那个纯jsp上传时
怎么运行时根本没 ...
Sturt2学习之十二---文件上传 -
641216927:
我还是一个struts2新手。
有个问题请教一下:
同时在t ...
struts2学习之一简单范例
spring+struts的集成(第二种集成方案)
一、原理
将业务逻辑对象通过spring注入到Action中,从而避免了在Action类中的直接代码查询
可以看出,在这个方案中action是通过spring的IOC来创建的
1、spring和struts依赖库配置
* 配置struts
--拷贝struts类库和jstl类库
--修改web.xml文件来配置ActionServlet
--提供struts-config.xml文件
--提供国际化资源文件
* 配置spring
--拷贝spring类库
--提供spring配置文件
2、因为Action需要调用业务逻辑方法,所以需要在Action中提供setter方法,让spring将业务逻辑对象注入过来
3、在struts-config.xml文件中
配置Action
* <action>标签中的type属性需要修改为org.springframework.web.struts.DelegatingActionProxy
DelegatingActionProxy是一个Action,主要作用是取得BeanFactory,然后根据<action>中的path属性值
到IoC容器中取得本次请求对应的Action
如<action path="/login"
type="org.springframework.web.struts.DelegatingActionProxy"
4、在spring配置文件中
需要定义spring的Action,如:
<bean name="/login" class="com.bjsxt.usermgr.actions.LoginAction" scope="prototype">
<property name="userManager" ref="userManager"/>
</bean>
* 必须使用name属性,name属性值必须和struts-config.xml文件中<action>标签的path属性值一致
* 必须注入业务逻辑对象
* 建议将scope设置为prototype,这样就避免了struts Action的线程安全问题
二、部分程序
1、struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?> <!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> <form-beans> <form-bean name="loginForm" type="com.bjsxt.usermgr.forms.LoginActionForm"/> </form-beans> <action-mappings> <action path="/logininput" forward="/login.jsp" ></action> <action path="/login" type="org.springframework.web.struts.DelegatingActionProxy" name="loginForm" scope="request" > <forward name="success" path="/success.jsp"/> </action> </action-mappings> <message-resources parameter="MessageResources" /> </struts-config>
2、applicationcontext-action.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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean name="/login" class="com.bjsxt.usermgr.actions.LoginAction" scope="prototype"> <property name="userManager" ref="userManager"/> </bean> </beans>
3、applicationcontext-bean.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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="userManager" class="com.bjsxt.usermgr.manager.UserManagerImpl"/> </beans>
4、LoginAction .java
package com.bjsxt.usermgr.actions; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.bjsxt.usermgr.forms.LoginActionForm; import com.bjsxt.usermgr.manager.UserManager; public class LoginAction extends Action { private UserManager userManager; @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //因为根据struts的配置文件<action path="/login" type="org.springframework.web.struts.DelegatingActionProxy" //调用的时候会先生成代理,当生成代理后会去根据spring中name标识也是/login,通过IOC生成LoginAction的实例,同时也依赖注入(IOC)了userManager //所以下面就可以直接用userManager了。 LoginActionForm laf = (LoginActionForm)form; userManager.login(laf.getUsername(), laf.getPassword()); return mapping.findForward("success"); } public void setUserManager(UserManager userManager) { this.userManager = userManager; } }
发表评论
-
使用 Spring 2.5 注释驱动的 IoC 功能
2010-08-04 11:04 1239级别: 初级 转自http://www.ibm.com/dev ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC
2010-08-04 11:00 1126转自http://www.ibm.com/developerw ... -
spring security 学习 续一
2009-08-21 15:08 5098六、为了使用MD5对密码加密,我们需要修改一下配置文件。 ... -
spring security 配置文件小结(逐步深化到url级别)
2009-08-20 17:39 9177一 、方式一:用户名密码都在配置文件中。 <?x ... -
spring2.5+strut2.0+hibernate3.3集成
2009-08-15 16:15 1261一、准备jar包,见附件。 二、分布集成 1、先集成spr ... -
ssh或S2sh中因延迟加载出现问题解决方案
2009-08-15 15:29 1057解决方案:在web.xml中加入以下代码 使用spr ... -
S2SH或ssh中乱码问题解决方法一
2009-08-15 15:23 1112在web.xml中添加以下配置 <filter> ... -
Spring+JDBC集成学习笔记(可参考ppt附件38-46页)
2009-08-15 14:25 1913使用Spring+JDBC集成步骤如下 ... -
spring小结之配置二级缓存!
2009-08-15 13:36 1834一、spring二级缓存主要分为三步,可以参考附件程序理解: ... -
Spring和Struts和Hibernate集成
2009-03-31 11:53 7911、见附件 由于附件最大不超过10M 所以部分lib单独打包了 ... -
Spring与Struts集成_第一种方案摘录
2009-03-30 13:38 1049一、原理: 在Action中取得BeanFactory对象,然 ... -
Spring学习笔记之九--声明式事务
2009-03-30 10:02 1019一、事务的传播特性: 前六个是标准的,在.net中也有,后面 ... -
spring学习之八--Hibernate编程式事务
2009-03-30 00:06 1583采用编程式事务 程序示例: 1、以前单个事物的控制 1)Hib ... -
spring学习之七“AOP使用spring静态配置文件(CGLIB)”
2009-03-29 16:21 2880一、spring对AOP的支持(在JDK动态代理和CGLIB之 ... -
spring学习之六“AOP使用spring静态配置文件的实现”
2009-03-29 15:58 1138一、spring(采用配置文件的方式)对AOP实现 1、sp ... -
spring学习之五“AOP概念及使用Annotation的实现”
2009-03-27 15:14 1049一、静态代理 参见代码 二、动态代理 参 ... -
spring学习之四“自动装配”
2009-03-27 14:46 909一。根据名字自动装配: 前提一、设置default-auto ... -
Spring学习笔记之三“scope” --bean范围
2009-03-27 14:37 1524三、spring Bean的作用域: scope可以取值: ... -
Spring学习笔记之二“属性注入”
2009-03-27 14:15 975参见附件代码理解下文(附件中有更加详细的注解)一、普通的属性注 ... -
Spring学习笔记之一“why spring”
2009-03-27 09:54 911一、spring概述 2、在使用spring前 ...
相关推荐
下面我们将详细探讨Spring与Struts集成的相关知识点。 首先,Spring 框架以其强大的DI(Dependency Injection)和AOP(Aspect Oriented Programming)特性而闻名,它可以管理对象的生命周期和依赖关系,使得代码...
本文将探讨如何将Spring与Struts进行集成,特别是第一种方案的实现细节。 首先,让我们了解集成Spring和Struts的基本概念。Spring作为一个控制反转(IoC)容器,可以管理Struts中的Action类实例,提供依赖注入,使...
本文将深入探讨Spring与Struts的集成方式,并提供一种常见集成方案的详细步骤。 首先,我们要了解Spring和Struts各自的核心功能。Spring框架主要负责业务逻辑管理、数据访问以及事务处理,而Struts则专注于视图和...
2. **使用Spring-Struts集成库**: Spring社区提供了spring-struts库,这个库包含了一些专门用于整合Struts和Spring的类和标签库。通过使用这个库,可以方便地在Struts的Action配置中声明Spring的bean,使Spring...
在实际项目中,根据需求还可以选择其他集成方案,例如使用Spring MVC完全替代Struts2,或者利用Spring Boot简化配置过程。无论哪种方式,都需要对Spring和Struts的核心原理有深入理解,才能更好地利用它们的能力。
**Spring与Struts的集成方案详解** 在Java Web开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力,而Struts作为经典的MVC框架,负责处理请求和展现视图。将两者集成可以充分利用各自的优点,...
**集成方案二:委托请求给Spring Bean处理** 另一种集成策略是将请求的处理完全委托给Spring管理的Bean,Action仅作为一个转发角色。在这种模式下,Action不再直接持有业务逻辑,而是调用Spring容器中的Service层...
2. **使用DelegatingRequestProcessor替换RequestProcessor**:在`struts-config.xml`中,将Struts的RequestProcessor替换为Spring的`DelegatingRequestProcessor`,并在Spring配置文件中定义与Struts `...
在"第27讲--Struts与Spring集成方案1(Struts集成Spring)"中,我们主要探讨如何将Struts2与Spring进行整合。集成的主要目的是利用Spring的强大功能来管理Struts2中的Action类,从而实现更灵活的依赖注入和更好的控制...
#### 方案二:继承Spring的ActionSupport类 另一种整合方式是通过继承Spring的ActionSupport类,这使得开发者能够显式地使用getWebApplicationContext()方法获取Spring管理的bean。这种方式更适用于那些需要深度...
本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...
### Spring集成Struts与Hibernate详解 #### Spring集成Struts **背景介绍** 随着Java技术的发展,Struts作为最早的MVC框架之一,在Java EE领域中占据了重要地位。虽然随着时间的推移,新的框架和技术不断涌现,但...
本集成方案旨在提供一个基于Spring 4.2.5、Hibernate 4.3.11和Struts 1.3.8的完整开发环境,以帮助开发者构建高效、可维护的企业级Java Web应用程序。 首先,Spring框架是一个全面的后端开发框架,它提供了依赖注入...
在实际应用中,第一种和第二种方案通常用于初始化 Spring 容器,而第三种方案则更深入地将 Spring 的功能集成到 Struts 请求处理流程中。然而,使用 `ActionSupport` 类(方法一)会使得 Struts Action 与 Spring ...
5. **集成MyBatis与Spring**:使用Spring的SqlSessionTemplate或SqlSessionDaoSupport来使MyBatis与Spring容器集成,这样可以从Spring管理的Bean中直接调用MyBatis的Mapper接口。 6. **编写业务逻辑**:在Spring...
3. **配置集成**:在Struts2的配置文件中,我们需要声明一个Struts2-Spring插件,它允许Struts2与Spring进行通信。同时,在Spring的配置文件中,需要定义Action类的bean,并配置好相关属性和依赖。 4. **AOP结合**...
Spring、Struts2和Hibernate是Java Web开发中的三大框架,它们各自负责应用程序的不同层面,共同构建了一个强大的企业级应用解决方案。这个"spring+struts2+hibernate的完整架包"应该包含了这三个框架的核心库和其他...
【标题】"spring+struts2+hibernate完整项目初学者进阶练习"是一个针对Java初学者设计的进阶项目,旨在帮助他们熟练掌握三大主流Java Web开发框架——Spring、Struts2和Hibernate的集成应用。这个项目是基于MySQL...
4. **Spring插件**:在Struts2中使用Spring插件(struts2-spring-plugin),这个插件能够帮助Struts2与Spring进行交互,自动将Action类实例化并注入依赖。 5. **Action类**:Action类需要实现Spring的`org.spring...