知识大全 如何有效的集成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/27958

相关参考

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

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

知识大全 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)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使

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

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

知识大全 对于Struts和Spring两种MVC框架的比较[2]

对于Struts和Spring两种MVC框架的比较[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 对于Struts和Spring两种MVC框架的比较[1]

对于Struts和Spring两种MVC框架的比较[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 实现一个简单的struts和spring框架

  apache终于发布了struts的正式版strutsGA所以我也该从webwork迁移至strutsstruts基本上就是webwork的翻版所以迁移过程倒是很简单只需要修改下配置文件和一些包名