整合Spring与Struts的几种方法,但第三种是最灵活的方法

IT168 技术文档】

    Spring与Struts对Model-View-Controller模式均提供了很好的支持。相比之下,Struts是一个比较单纯的MVC框架,在实际应用中,开发人员更喜欢使用Struts完成MVC的设计,因而在有必要对Spring与Struts进行整合。

    整合的关键点在于:将Struts中Action的实例生成不再由Struts自己负责,而交于Spring容器去管理。因此,进行整合的一个技术前提是Struts中作为Controller的ActionServlet必须能够装载Spring的应用程序环境,而Spring的org.springframework.web.struts.ContextLoaderPlugin恰好提供了这种支持。在Struts的配置文件struts-config.xml中,将ContextLoaderPlugin注册即可,示例如下:

  
  
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>
...
<plug-in className=”org.springframework.web.struts.ContextLoaderPlugin”>
<set-property property=”contextConfigLocation” value=”/WEB-INF/config.xml”/>
</plug-in>
...
</struts-config>

    其中的config.xml是Spring的配置文件。

    之后,我门可以采用三种方式之一来整合Spring和Struts:
    1.Struts的Action继承Spring的ActionSupport类,并在Action中获取Spring的ApplicationContext。这是最简单的一种整合方式,但有三个缺点:第一,Struts与Spring紧密耦合,不能改换到其他IoC容器;第二,难以使用Spring AOP特性;第三,对于需要使用DispatchAction的Struts应用无能为力。

    2.在Struts的配置文件中,以Spring的DelegatingRequestProcessor类代替Struts的RequestProcessor类,并在Spring的配置文件中定义与Struts配置文件中<action-mappings>对应的bean,从而将Struts的Action与Spring分开,并把Struts的动作置于Spring的控制之下。这种整合方式的优点是将不再依赖Spring这个特定的IoC容器,但必须依赖Struts的RequestProcessor类。    

   3.通过Spring的DelegatingActionProxy类代理Struts的动作,即在Struts配置文件中,定义<action-mappings>的type属性全部改为DelegatingActionProxy,而不是具体的类名,并在Spring配置文件中定义与Struts动作映射对应的bean,从而将Struts的Action与Spring分开,并把Struts的动作置于Spring的控制之下。无疑,这是最灵活的一种整合方式。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值