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

spring与struts集成方案二

阅读更多

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;
	}
}

 

  • 大小: 20.9 KB
分享到:
评论

相关推荐

    spring_struts集成例子

    下面我们将详细探讨Spring与Struts集成的相关知识点。 首先,Spring 框架以其强大的DI(Dependency Injection)和AOP(Aspect Oriented Programming)特性而闻名,它可以管理对象的生命周期和依赖关系,使得代码...

    Spring与Struts集成_第一种方案摘录

    本文将探讨如何将Spring与Struts进行集成,特别是第一种方案的实现细节。 首先,让我们了解集成Spring和Struts的基本概念。Spring作为一个控制反转(IoC)容器,可以管理Struts中的Action类实例,提供依赖注入,使...

    Spring与Struts集成方式三

    本文将深入探讨Spring与Struts的集成方式,并提供一种常见集成方案的详细步骤。 首先,我们要了解Spring和Struts各自的核心功能。Spring框架主要负责业务逻辑管理、数据访问以及事务处理,而Struts则专注于视图和...

    第28讲--Struts与Spring集成方案2(Spring集成Struts)

    2. **使用Spring-Struts集成库**: Spring社区提供了spring-struts库,这个库包含了一些专门用于整合Struts和Spring的类和标签库。通过使用这个库,可以方便地在Struts的Action配置中声明Spring的bean,使Spring...

    Spring+Struts的集成(第一种方案)

    在实际项目中,根据需求还可以选择其他集成方案,例如使用Spring MVC完全替代Struts2,或者利用Spring Boot简化配置过程。无论哪种方式,都需要对Spring和Struts的核心原理有深入理解,才能更好地利用它们的能力。

    Spring与Struts的集成(第二种方案):

    **Spring与Struts的集成方案详解** 在Java Web开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力,而Struts作为经典的MVC框架,负责处理请求和展现视图。将两者集成可以充分利用各自的优点,...

    Spring集成Struts的三种方案

    **集成方案二:委托请求给Spring Bean处理** 另一种集成策略是将请求的处理完全委托给Spring管理的Bean,Action仅作为一个转发角色。在这种模式下,Action不再直接持有业务逻辑,而是调用Spring容器中的Service层...

    整合Spring与Struts的几种方法

    2. **使用DelegatingRequestProcessor替换RequestProcessor**:在`struts-config.xml`中,将Struts的RequestProcessor替换为Spring的`DelegatingRequestProcessor`,并在Spring配置文件中定义与Struts `...

    第27讲--Struts与Spring集成方案1(Struts集成Spring)

    在"第27讲--Struts与Spring集成方案1(Struts集成Spring)"中,我们主要探讨如何将Struts2与Spring进行整合。集成的主要目的是利用Spring的强大功能来管理Struts2中的Action类,从而实现更灵活的依赖注入和更好的控制...

    Spring整合Struts

    #### 方案二:继承Spring的ActionSupport类 另一种整合方式是通过继承Spring的ActionSupport类,这使得开发者能够显式地使用getWebApplicationContext()方法获取Spring管理的bean。这种方式更适用于那些需要深度...

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...

    spring集成Struts与Hibernate

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

    Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一

    本集成方案旨在提供一个基于Spring 4.2.5、Hibernate 4.3.11和Struts 1.3.8的完整开发环境,以帮助开发者构建高效、可维护的企业级Java Web应用程序。 首先,Spring框架是一个全面的后端开发框架,它提供了依赖注入...

    spring和struts整合的三种方案

    在实际应用中,第一种和第二种方案通常用于初始化 Spring 容器,而第三种方案则更深入地将 Spring 的功能集成到 Struts 请求处理流程中。然而,使用 `ActionSupport` 类(方法一)会使得 Struts Action 与 Spring ...

    spring+struts2+mybatis整合

    5. **集成MyBatis与Spring**:使用Spring的SqlSessionTemplate或SqlSessionDaoSupport来使MyBatis与Spring容器集成,这样可以从Spring管理的Bean中直接调用MyBatis的Mapper接口。 6. **编写业务逻辑**:在Spring...

    struts+spring集成

    3. **配置集成**:在Struts2的配置文件中,我们需要声明一个Struts2-Spring插件,它允许Struts2与Spring进行通信。同时,在Spring的配置文件中,需要定义Action类的bean,并配置好相关属性和依赖。 4. **AOP结合**...

    spring+struts2+hibernate的完整架包

    Spring、Struts2和Hibernate是Java Web开发中的三大框架,它们各自负责应用程序的不同层面,共同构建了一个强大的企业级应用解决方案。这个"spring+struts2+hibernate的完整架包"应该包含了这三个框架的核心库和其他...

    spring+struts2+hibernate完整项目初学者进阶练习

    【标题】"spring+struts2+hibernate完整项目初学者进阶练习"是一个针对Java初学者设计的进阶项目,旨在帮助他们熟练掌握三大主流Java Web开发框架——Spring、Struts2和Hibernate的集成应用。这个项目是基于MySQL...

    struts2与spring2的整合

    4. **Spring插件**:在Struts2中使用Spring插件(struts2-spring-plugin),这个插件能够帮助Struts2与Spring进行交互,自动将Action类实例化并注入依赖。 5. **Action类**:Action类需要实现Spring的`org.spring...

Global site tag (gtag.js) - Google Analytics