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

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

阅读更多

一、原理:

在Action中取得BeanFactory对象,然后通过BeanFactory获取业务逻辑对象



 

1、spring和struts依赖库配置
 * 配置struts
  --拷贝struts类库和jstl类库
  --修改web.xml文件来配置ActionServlet
  --提供struts-config.xml文件
  --提供国际化资源文件MessageResources.properties
 * 配置spring
  --拷贝spring类库
  --提供spring配置文件
  
2、在struts的Action中调用如下代码取得BeanFactory
 BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());

//这个方法的前提是在web.xml中加入了如下的配置
  /*<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext-*.xml</param-value>
     </context-param>
   
  <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>*/
  //这个配置的作用是当spring启动时,最先调用listener,那么就会在容器中加入BeanFactory实例对象。以后需要使用时通过以下语句去拿就可以了。这样就不会重复生成BeanFactory 对象了
  

 

3、通过BeanFactory取得业务对象,调用业务逻辑方法   

 

二、具体实例程序

1、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>

 
  2、web.xml加入部分

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

 

3、loginAction

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 org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.bjsxt.usermgr.forms.LoginActionForm;
import com.bjsxt.usermgr.manager.UserManager;
import com.bjsxt.usermgr.manager.UserManagerImpl;

public class LoginAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		LoginActionForm laf = (LoginActionForm)form;
		//这里第一种userManager 的生成方式是用new的方式,没有用依赖注入
		//UserManager userManager = new UserManagerImpl();
		//userManager.login(laf.getUsername(), laf.getPassword());
		
		//这里第二种userManager的生成方式是用的spring的工厂的方式,虽然用了依赖注入,但是这种方式也有他的缺陷
		//打个比方如果需要在多个类中应用,那么需要生成多个BeanFactory的对象,所以有了下面的方法
		//BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext-beans.xml");
		//UserManager userManager = (UserManager)factory.getBean("userManager");
		//userManager.login(laf.getUsername(), laf.getPassword());
		
		
		//这个方法的前提是在web.xml中加入了如下的配置
		/*<context-param>
	  	<param-name>contextConfigLocation</param-name>
	  	<param-value>classpath*:applicationContext-*.xml</param-value>
	    </context-param>
	   
		<listener>
			<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
		</listener>*/
		//这个配置的作用是当spring启动时,最先调用listener,那么就会在容器中加入BeanFactory实例对象。以后需要使用时通过以下语句去拿就可以了
		BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
		
		//以下这句其实和上面那一句是一致的,只不过它让返回值更加明确了,ApplicationContext其实就是BeanFactory的一个子接口(功能更多)
		//ApplicationContext pc = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
		UserManager userManager = (UserManager)factory.getBean("userManager");
		userManager.login(laf.getUsername(), laf.getPassword());
		
		return mapping.findForward("success");
	}

	
}

 

 

4、struts配置

从以下配置文件的 <action path="/login"
type="com.bjsxt.usermgr.actions.LoginAction"
name="loginForm"
scope="request" >
<forward name="success" path="/success.jsp"/>
</action>
可以看出,在这个方案中与下一个方案的区别,action还是通过struts实例化取得的,不是通过spring的IOC来创建action的,在这个方案中只是UserManagerImpl业务实现实现了IOC

<?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="com.bjsxt.usermgr.actions.LoginAction"
				name="loginForm"
				scope="request"	
		>
			<forward name="success" path="/success.jsp"/>
		</action>
	</action-mappings>

    <message-resources parameter="MessageResources" />
</struts-config>

 

5、整体见附件

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

相关推荐

    Maven搭建spring_struts2_Hibernate_demo

    Maven搭建spring_struts2_Hibernate项目源码,包括数据库,博客地址:http://blog.csdn.net/fengshizty/article/details/43794911

    Spring_Struts_Ibatis_Mysql Demo

    【Spring_Struts_Ibatis_Mysql Demo】是一个典型的Java Web应用程序示例,它整合了四个关键的技术框架:Spring、Struts、iBatis和MySQL数据库。这个项目旨在展示如何在实际开发中有效地集成这些组件,创建一个功能...

    spring_struts2_hibernate_mysql集成

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

    Spring_Struts__Hibernate_MessgaeBoard

    标题“Spring_Struts__Hibernate_MessgaeBoard”指的是一个整合了Spring、Struts和Hibernate的Web应用程序示例,主要用于演示如何在Java环境中构建一个基于SSH(Spring、Struts、Hibernate)的留言板系统。...

    spring_struts2_myBatis.zip

    这个名为"spring_struts2_myBatis.zip"的压缩包提供了一个整合这三个框架的小型应用示例,为开发者提供了学习和实践的机会。 首先,Spring框架作为Java企业级应用的核心组件,它以依赖注入(DI)和面向切面编程...

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

    在"Spring+Struts的集成(第一种方案)"中,我们通常指的是基于Servlet Filter的集成方式,这种方案将Spring作为应用的核心容器,而Struts作为MVC框架处理HTTP请求。下面我们将详细介绍这个集成方案的具体步骤和关键...

    [轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发

    【轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发】这个主题主要涉及的是Java EE领域中的三大框架——Struts2、Spring3和Hibernate的集成应用,这是构建现代Java后端系统的一种常见方式。这些框架...

    mybatis_spring_struts2_tjz.zip_ibatis_mybatis_spring_spring stru

    本项目"mybatis_spring_struts2_tjz.zip"提供了一个集成这三大框架的小型示例,适合初学者学习和理解这些框架的协同工作。 1. **Struts2**:这是一个基于MVC设计模式的Java Web框架,负责处理HTTP请求和控制应用...

    struts2.2.3_+_spring3.1.0_+_mybatis3.1.0集成简单demo.doc

    struts2.2.3_+_spring3.1.0_+_mybatis3.1.0集成简单.docx,我想免费让大家下载,可以不知道怎么设置,有知道的可以私信我

    Spring与Struts集成方式一

    下面,我们将深入探讨Spring与Struts的集成方式,并基于给定的标题“Spring与Struts集成方式一”展开讨论。 首先,我们需要理解Spring和Struts的核心概念。Spring框架提供了一个全面的基础架构,支持创建健壮的、...

    struts2_spring_mybatis

    此外,Spring还提供了对数据库操作的支持,如JDBC模板和ORM集成,以及对其他框架的集成功能,如与Struts2和MyBatis的整合。 2. **Struts2框架**:Struts2是基于MVC设计模式的Web开发框架,它负责处理HTTP请求并将其...

    Struts2_Spring_Example.zip_spring struts2_struts2-examp

    这些拦截器可以在 struts.xml 中配置,并与 Spring 集成。 7. **Web.xml**:Web 应用的部署描述符,配置了 Struts2 和 Spring 的前端控制器(如 DispatcherServlet)。 8. **JSP 页面**:视图层的实现,通常用于...

    struts2_spring2.5_ibatis2.3_mysql架构

    *架构struts2_spring2.5_ibatis2.3 *mysql5.0 *jdk 1.6 *带有所有jar包,可直接运行 本实例实现了用户登陆,用户信息CRUD相关操作。让你感受到了ibatis做o/r mapping的方便快捷。 下次集成dwr进来 create ...

    Spring+Struts2_整合原理

    ### Spring与Struts2整合原理详解 #### 一、整合背景及意义 随着企业级应用需求的日益复杂,单一...通过以上步骤,开发者可以在实际项目中轻松实现Spring与Struts2的集成,构建出功能强大且结构清晰的企业级应用。

    spring_struts1_hibernate架构空项目

    这个“spring_struts1_hibernate”项目很可能是为了演示或学习这些框架如何协同工作而创建的一个空项目。下面我们将深入探讨这三个框架的核心功能和它们之间的集成。 **Spring框架** Spring 是一个全面的企业级应用...

    spring_struts2_mybatis配置文件架包

    "spring_struts2_mybatis配置文件架包"提供了整合这三个框架所需的配置文件和依赖库,为开发者提供了一个快速入门的模板。这个包对于初学者来说极其有价值,因为它减少了配置工作,使他们能够更快地理解和实践这些...

    itcast1222elec_spring_struts2_hibernate_DEMO_ringc96_

    标题中的"itcast1222elec_spring_struts2_hibernate_DEMO_ringc96_"揭示了一个IT项目,它是一个整合了Spring、Struts2和Hibernate三个核心框架的演示应用。这个DEMO主要展示了如何在实际开发中有效地集成这三个流行...

    struts2_mybatis_spring_框架实例整合_数据库 文档

    1. 配置Spring:创建Spring的配置文件,定义Struts2的Action Bean以及MyBatis的SqlSessionFactory和Mapper接口的Bean,设置数据源和事务管理器。 2. 配置Struts2:在struts.xml中定义Action类,指定结果视图,同时...

    spring与struts集成方案二

    通过上述步骤,我们可以构建一个高效、稳定的Spring与Struts集成应用。这种方式使得业务逻辑和控制层分离,提高了代码的可维护性和复用性,同时,Spring的事务管理和依赖注入也大大简化了开发工作。在实际项目中,...

Global site tag (gtag.js) - Google Analytics