`
byduke
  • 浏览: 31620 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

spring整合struts

阅读更多
spring整合struts有3种方式,其中一种是继承ActionSupport类,还有一种是spring有一个自己提供的继承了RequestProcess的类,把struts的控制器替换一下。这两种方式我都不想介绍了,我想说的是第三种方式,也是比较好的一种,就是把struts的Action交给spring的IoC容器管理,其好处不言而喻,Action完全可以享受spring的IoC管理带来的好处,比如方便的进行依赖注入,可以对Action的范围进行控制,并且还可以保证它的线呈安全性,同时它还可以享受spring AOP带来的特性等等一系列的优点。

其实这中整合方式非常简单,在struts-config.xml文件中配置action-mapping中的每个action的时候,这些action的type不再是对应的Action实现类了,而是spring提供好的,org.springframework.web.struts.DelegatingActionProxy,这是一个Action的动态代理类,用来拦截每个action请求,如下就是配置信息
<action path="/login"     type="org.springframework.web.struts.DelegatingActionProxy" input="/index.jsp" name="loginForm" validate="true" scope="request">
      <forward name="sucess" path="/main.jsp" />
      <forward name="error" path="/index.jsp" />
</action>

然后在spring的配置文件中需要对真正的Action实现类进行注册,实际上就是定义好一个bean
<bean name="/login" class="struts.action.OpAction" ></bean>

这里需要注意的地方是 bean是用name来定义标识而不是id,因为它需要根据请求的action路径来定位bean,而请求路径中包含"/",如果用id是会出错误的,所以要使用name属性。
这样就完成了整合配置了,真正的Action实现类依然是继承Action没有任何改变。Action里面如果需要service那么还可以进行依赖注入,同时还可以改变Action实现类的访问范围。我个人比较倾向于这样的管理形式
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics