知识大全 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中接口注入的三种方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 下面是Spr
Spring的三种注入方式都是什么?如何选用? 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!接口注
在Struts中整合Spring的IoC支持是一件十分简单的事情让我们一步一步来实现 )复制strutsspringpluginxxxjar和相应的springj
Spring整合Struts 虽然Spring也提供了自己的MVC组件但一来Spring的MVC组件过于繁琐二 来Struts的拥护者实在太多因此很
struts中使用单选按钮有三种方式 使用<:option>标签 <:selectproperty=city> <:optionvalue=>北京市<
知识大全 spring struts2 ibatis框架整合开发
这里主要介绍一下spring+struts+ibatis所需要的jar包文件spring所需包 以上包为spring配置基本包ibatis所需包 有解决方法的朋友们希望能回复 与struts整合
Struts整合spring方法(三) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Sprin
知识大全 Struts2 Spring Hibernate 的简单整合
Struts2SpringHibernate的简单整合 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧