Struts与Spring整合的方法

Struts与Spring整合的方法

 

要使Struts与Spring协同工作需要修改Struts的配置文件struts-config.xml,以便将Spring的配置文件applicationContext.xml或者还有其它的xml文件加入上下文。

修改Struts的配置文件struts-config.xml

<struts-config>

<plug-in

className="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property property="contextConfigLocation"

value="/WEB-INF/applicationContext.xml" />

</plug-in>

</struts-config>

通过plug-in我们实现了Spring Context的加载(有多个xml文件,使用逗号隔开),我们还需要修改配置,将Struts Action交给Spring容器进行管理:

要改的地方就是struts-config.xml的关于action部分的配置,将先前的每一个action的type由原来它们所对应的具体的类修改为:org.springframework.web.struts.DelegatingActionProxy

然后在spring的配置文件中来配置action,是将action作为bean来配置的。

<!--      Action配置      -->

  <bean name="/user" class="com.ctbr.springtest.web.action.UserAction"

      singleton="false">

<!-- 在spring2.0中已经没有了singleton这个属性了,改用scope了 -->

      <property name="userService">

          <ref bean="userService"/>

      </property>

  </bean>

这样就将struts和spring整合好了,然后在action中要为XxxService设一个setter注入方法,在具体的方法中就可以使用getBean("fdsffsdffds")来取得业务对象了。当然这只是其中的一种方法。

总结(原理):

而在面向SS组合的配置方式中,我们用Spring提供的DelegatingActionProxy 作为Action的type属性。DelegatingActionProxy同样是org.apache.struts.action.Action的一个子类,它将把调用请求转交给真正的Action实现。下面是DelegatingActionProxy的execute方法代码:

public ActionForward execute(

ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception {

//获得实际的Action实例,并将请求转交

Action delegateAction = getDelegateAction(mapping);

return delegateAction.execute(mapping, form, request, response);

}

如此一来,Struts 在运行期加载的实际上是DelegatingActionProxy , 而DelegatingActionProxy则实现了针对实际Action的调用代理,Struts最终调用的将是由Spring管理的Action实例。

通过这样的方式,Spring 获得了对Action 实例的管理权,它将对Action进行调度,并为Struts提供所需的Action实例。既然Action已经由Spring全权接管,那么我们就可以将此Action看作是Spring中的一个Bean,它可享受Spring提供的所有服务(依赖注入、实例管理、事务管理等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值