知识大全 实例说明如何集成Spring和Struts

Posted

篇首语:盛年不重来,一日难再晨,及时当勉励,岁月不待人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 实例说明如何集成Spring和Struts相关的知识,希望对你有一定的参考价值。

实例说明如何集成Spring和Struts  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  本文想通过一个简单的实例阐述如何集成Spring和Struts

   Struts和Spring

  Struts 代表了MVC第二类架构的实现 在Struts中最重要的组件是ActionServlet Action和 ActionForm 子类 ActionServlet 代表controller 他基于配置文件接受请求和 把这些请求转发到相应的ActionForm和Action子类 ActionForm把用户输入的数据传送到Action Action调用商务层组件完成必要的操作 最后提交到view ActionServlet使用一个配置文件(struts config xml)加载Action子类的定义用以接受用户请求 基于请求URL controller 找到一个action定义去接受这个请求 Struts构件处理用户请求 检查配置文件 完成相应的动作

  Spring是一种轻量级的容器 它使得使用一个外部XML配置文件非常容易绑定对象 每个对象能够通过列出JavaBean属性得到一个依赖 对象的指针 通过绑定XML配置文件使剩下的工作更加简单 依赖注入(DI)是非常强大的功能 Spring支持可插拔的事务管理器 提供事物管理方式更 多的选择 它集成了持久性的架构同时也提供了一个统一的exception 分类 Spring也提供面向方面(AOP)编程的简单机制

   Struts和Spring的集成

  将Struts应用集成到Spring框架可以采用多种方法 首先Spring明显地被设计用于解决JEE的现实问题 如复杂性 性能低下 可测试性及其他 第二 Spring框架包括一个AOP实现让你可以使用面向方面的程序设计技术;第三 Spring 框架可以能够非常容易地管理和协调Struts;和Struts类似 Spring也包含MVC 实现 两个架构都有优缺点 Struts是MVC最重要的架构 很多开发团队学会了依靠Struts在规定时限内开发出高质量的软件 因此开发团队宁愿 集成Spring的功能也不愿意转到Spring MVC;好消息是Spring的结构允许你集成Struts Web 框架 基于Spring的业务层和持久层 我们的方法是应用Spring中的ActionSupport类去集成Struts

   加载应用的context

  首先我们需要使用Spring中的ContextLoaderPlugin为Struts ActionServlet去装载Spring应用的上下文 简单在struts config xml 文件中增加plug in 如下( )所示

﹤ ?xml version= encoding= ISO ?﹥

  ﹤ !DOCTYPE struts config PUBLIC

   //Apache Sofare Foundation//DTD Struts Configuration //EN

   config_ _ dtd ﹥

  ﹤ struts config﹥

  ﹤ form beans﹥

  ﹤ form bean name= searchForm

  type= apache struts validator DynaValidatorForm ﹥

  ﹤ form property name= cardno type= java lang String /﹥

  ﹤ /form bean﹥

  ﹤ /form beans﹥

  ﹤ global forwards type= apache struts action ActionForward ﹥

  ﹤ forward name= wele path= /wele do /﹥

  ﹤ forward name= searchEntry path= /searchEntry do /﹥

  ﹤ forward name= searchSubmit path= /searchSubmit do /﹥

  ﹤ /global forwards﹥

  ﹤ action mappings﹥

  ﹤ action path= /wele forward= /WEB INF/pages/ /﹥

  ﹤ action path= /searchEntry forward= /WEB INF/pages/search jsp /﹥

  ﹤ action path= /searchSubmit

  type= tek Creditcard actions SearchSubmit

  input= /searchEntry do

  validate= true

  name= searchForm ﹥

  ﹤ forward name= success path= /WEB INF/pages/detail jsp /﹥

  ﹤ forward name= failure path= /WEB INF/pages/search jsp /﹥

  ﹤ /action﹥

  ﹤ /action mappings﹥

  ﹤ message resources parameter= ApplicationResources /﹥

  ﹤ plug in className= apache struts validator ValidatorPlugIn ﹥

  ﹤ set property property= pathnames value= /WEB INF/validator rules xml /WEB INF/validation xml /﹥

  ﹤ /plug in﹥

  ﹤ plug in className= springframework web struts ContextLoaderPlugIn ﹥ ( )

  ﹤ set property property= contextConfigLocation value= /WEB INF/beans xml /﹥

  ﹤ /plug in﹥

  ﹤ /struts config﹥

   使用Spring的ActionSupport类

  要用Spring去集成Struts 创建一个Spring 上下文是必须要做的 springframework web struts ActionSupport 类提供一个 getWebApplicationContext() 方法非常容易地获得Spring上下文 全部你需要去做的是从Spring的ActionSupport 代替Struts 中的Action类去延伸你的action 如下所示

package tek Creditcard actions;

  import java io IOException;

  import javax servlet ServletException;

  import javax servlet HttpServletRequest;

  import javax servlet HttpServletResponse;

  import apache struts action ActionError;

  import apache struts action ActionErrors;

  import apache struts action ActionForm;

  import apache struts action ActionForward;

  import apache struts action ActionMapping;

  import apache struts action DynaActionForm;

  import ntext ApplicationContext;

  import springframework web struts ActionSupport;

  import infotek Creditcard beans Creditcard;

  import infotek Creditcard business CreditcardService;

  public class SearchSubmit extends ActionSupport |( )

  public ActionForward execute(ActionMapping mapping ActionForm form

  HttpServletRequest request HttpServletResponse response)

  throws IOException ServletException

  DynaActionForm searchForm = (DynaActionForm) form;

  String isbn = (String) searchForm get( cardno );

  //the old fashion way

  //CreditcardService creditcardService = new CreditcardServiceImpl();

  ApplicationContext ctx = getWebApplicationContext(); |( )

  CreditcardService creditcardService =

  (CreditcardService ) ctx getBean( creditcardService ); |( )

  CreditCard creditard = CreditCardService read(cardno trim());

  if (null == creditard)

  ActionErrors errors = new ActionErrors();

  errors add(ActionErrors GLOBAL_ERROR new ActionError ( message notfound ));

  saveErrors(request errors);

  return mapping findForward( failure ) ;

  

  request setAttribute( creditcard creditcard);

  return mapping findForward( success );

  

  在( )中 我们通过延伸Spring ActionSupport 类而不是Struts Action 类创建了一个action;在( )中 我们使用getWebApplicationContext()方法获得一个 ApplicationContext;为了获得商务服务 在( )中 我们使用ApplicationContext去查找Spring bean;这个技术非常容易理解 不幸的是它把Struts的action和Spring framework绑定了 如果你想替换Spring你不得不重写代码 而且Struts的action不在Spring的控制之下 遗憾的是这种方法无法获得Spring AOP的好处

   结论

cha138/Article/program/Java/ky/201311/27911

相关参考

知识大全 深入探讨Spring与Struts 的集成方案

深入探讨Spring与Struts的集成方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Sp

知识大全 由spring管理struts的Action实例

由spring管理struts的Action实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 struts+spring实现的登陆实例源码

cha138/Article/program/Java/JSP/201311/20631

知识大全 实例讲解Spring集成JSF的最简单方式

实例讲解Spring集成JSF的最简单方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Spr

知识大全 实例详解struts2常用的******

   大家都知道吧在struts中提供了一些常用的******其中就包括对异常处理的******我们直接声明使用即可很方便的哟!下面来举个例子说明一下 &nbs

知识大全 Spring和Struts的区别

Spring和Struts的区别?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinz

知识大全 Spring 和struts 整合的三种方式

Spring和struts整合的三种方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用Sp

知识大全 一个struts2和spring2的整合

  在Struts中整合Spring的IoC支持是一件十分简单的事情让我们一步一步来实现   )复制strutsspringpluginxxxjar和相应的springj

知识大全 Spring 和struts 整合的三种方式[3]

Spring和struts整合的三种方式[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  全

知识大全 Spring 和struts 整合的三种方式[1]

Spring和struts整合的三种方式[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使