一直在用Webwork
因为Struts
基于Xwork
开发
变化更多的体现在名称上
所以平时甚少关注
这些天看了一下Apache上的文档
觉得Struts
更加优雅一些
至少Action变成了一个纯粹的POJO
而无须再实现任何一个接口
Struts不再提供Webwork内置的IoC容器支持转而将Spring作为ObjectFactory的缺省实现所有由Struts创建的对象都是由ObjectFactory实例化ObjectFactory可以集成各种IoC容器例如SpringPico Plexus等等
在******方面Struts不再支持AroundInterceptor如果要用到AroundInterceptor 则必须单独引入Webwork的相关类或者重写自己的******这一点是我不太理解的地方不知出于什么考虑
Struts全面引入了Dojo大概是对以前Webwork在客户端实现的不满吧例如不再支持Webwork的richtexteditor而以Dojo的编辑器取代说实话Webwork了的rich text编辑器确实不太好用有不少bug还把Webwork的Datepicker标签换成了Dojo实现的datetimepicker标签
对开发人员而言Struts在Action映射方面的改进值得关注尤其是借鑒了Spring的方式提供了对action名称通配符的支持在Webwork里需要在xworkxml里以如下格式定义action:
<action name=Logon class=tutorialLogon>
<result type=redirectAction>Menu</result>
<result name=input>/Logonjsp</result>
</action>
而在Struts中则可以引入通配符形如
<action name=*Logon class=tutorialLogon>
<result type=redirectAction>Menu</result>
<result name=input>/Logonjsp</result>
</action>
这样任何以Logon结尾用作登录验证的Action例如NewUserLogon都可调用tutorialLogon的一个实例
Struts还引入一个消息存储******MessageStoreInterceptor用于存放检索各种提示错误消息等等在一个session生命期中都是可用的
总的来说Struts与Webwork的区别不是很大但如果将现有的Webwork项目整体迁移到Struts上还是需要认真考虑一下