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

Posted

篇首语:幼敏悟过人,读书辄成诵。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring 和struts 整合的三种方式相关的知识,希望对你有一定的参考价值。

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

   使用Spring 的 ActionSupport

   使用Spring 的 DelegatingRequestProcessor 类

   全权委托

  无论用那种方法来整合第一步就是要为struts来装载spring的应用环境 就是在 struts 中加入一个插件

  struts config xml中

    <plug in className= springframework web struts ContextLoaderPlugIn >  <set property property= contextConfigLocation value= /WEB INF/applicationContext xml /> </plug in>

  spring 的配置文件被作为参数配置进来 这样可以省略对web xml 文件中的配置 确保你的applicationContext xml 在WEB INF目录下面

   使用Spring的ActionSupport

  Spring 的ActionSupport 继承至 apache struts action Action ActionSupport的子类可以或得 WebApplicationContext类型的全局变量 通过getWebApplicationContext()可以获得这个变量

  这是一个 servlet 的代码

   public class LoginAction extends springframework web struts ActionSupport   public ActionForward execute(ActionMapping mapping ActionForm form    HttpServletRequest request HttpServletResponse response)   LoginForm loginForm = (LoginForm) form;// TODO Auto generated method stub                //获得  WebApplicationContext  对象                WebApplicationContext ctx = this getWebApplicationContext();    LoginDao dao = (LoginDao) ctx getBean( loginDao );  User u = new User();    u setName(loginForm getName());  u setPwd(loginForm getPwd());      if(dao checkLogin(u))   return mapping findForward( success );  else   return  mapping findForward( error );     

  applicationContext xml 中的配置<beans> <bean id= loginDao class= cao dao LoginDao /></beans>

  这中配置方式同直接在web xml文件配置差别不大 注意 Action继承自 springframework web struts ActionSupport 使得struts和spring耦合在一起

  但实现了表示层和业务逻辑层的解耦(LoginDao dao = (LoginDao) ctx getBean( loginDao ))

   使用Spring 的 DelegatingRequestProcessor 类

  DelegatingRequestProcessor  继承自 apache struts action RequestProcessor 并覆蓋了里面的方法

  sturts config xml  中  <controller processorClass= springframework web struts DelegatingRequestProcessor /> 通过 <controller >来替代 apache struts action RequestProcessor 的请求处理

  

  public class LoginAction extends Action  //利用spring来注入这个对象  private LoginDao dao ;  public void setDao(LoginDao dao)   System out println( 执行注入 );  this dao = dao; 

  public LoginDao getDao()   return dao; 

  public ActionForward execute(ActionMapping mapping ActionForm form    HttpServletRequest request HttpServletResponse response)   LoginForm loginForm = (LoginForm) form;// TODO Auto generated method stub  //这样一改这行代码似乎没有必要了   //WebApplicationContext ctx = this getWebApplicationContext();  //LoginDao dao = (LoginDao) ctx getBean( loginDao );   User u = new User();    u setName(loginForm getName());  u setPwd(loginForm getPwd());    //直接用dao来调用spring会将这个对象实例化   if(dao checkLogin(u))   return mapping findForward( success );  else   return  mapping findForward( error );     这里的 LoginAction extends Action 说明 struts 每有和spring 耦合 看一下applicationContext xml 中的配置 <beans> <bean id= loginDao class= cao dao LoginDao />  <bean name= /login class= cao struts action LoginAction >  <property name= dao >   <ref local= loginDao />  </property> </bean></beans>

  这里 name= /login 与struts 中的path匹配class= cao struts action LoginAction 与struts 中的type匹配

  还要为 LoginAction 提供必要的setXXX方法 获得ApplicationCotext和依赖注入的工作都在DelegatingRequestProcessor中完成

   全权委托

  Action 的创建和对象的依赖注入全部由IOC容器来完成 使用Spring的DelegatingAcionProxy来帮助实现代理的工作 springframework web struts DelegatingActiongProxy继承于 apache struts action Action

  全权委托的配置方式同 方式 类似 (applcationContext xml文件的配置和 Action类的实现方式相同)

   <struts config>  <data sources />  <form beans >    <form bean name= loginForm type= cao struts form LoginForm />

  </form beans>

  <global exceptions />  <global forwards /> <action mappings >    <! type指向的是spring 的代理类 >    <action      attribute= loginForm       input= login jsp       name= loginForm       path= /login       scope= request

  type= springframework web struts DelegatingActionProxy >            <forward name= success path= /ok jsp />      <forward name= error path= /error jsp />    </action>  </action mappings>     <message resources parameter= cao struts ApplicationResources />

  <plug in className= springframework web struts ContextLoaderPlugIn >  <set property property= contextConfigLocation value= /WEB INF/applicationContext xml /> </plug in>

  </struts config>不同之处 <action>中 type指向的是spring 的代理类

   去掉struts config xml中 <controller >

  三种整和方式中我们优先选用 全权委托的方式

  理由

   第一种使得过多的耦合了Spring和Action

   RequestProcessor类已经被代理 如果要再实现自己的实现方式(如 编码处理)怕有点麻烦

  总结一下

  整合工作中的步骤

   修改struts config xml

   配置applicationContext xml

cha138/Article/program/Java/ky/201311/28711

相关参考

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

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

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

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

知识大全 分享Spring中接口注入的三种方式

分享Spring中接口注入的三种方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下面是Spr

知识大全 Spring的三种注入方式都是什么

Spring的三种注入方式都是什么?如何选用?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!接口注

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

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

知识大全 spring 整合strut2

Spring整合Struts    虽然Spring也提供了自己的MVC组件但一来Spring的MVC组件过于繁琐二    来Struts的拥护者实在太多因此很

知识大全 struts使用单选按钮的三种方式

  struts中使用单选按钮有三种方式  使用<:option>标签  <:selectproperty=city>  <:optionvalue=>北京市<

知识大全 spring struts2 ibatis框架整合开发

这里主要介绍一下spring+struts+ibatis所需要的jar包文件spring所需包  以上包为spring配置基本包ibatis所需包  有解决方法的朋友们希望能回复  与struts整合

知识大全 Struts整合spring方法(三)

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

知识大全 Struts2 Spring Hibernate 的简单整合

Struts2SpringHibernate的简单整合  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧