`
jfxia
  • 浏览: 21941 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Struts2与Webwork2的区别

阅读更多

一直在用Webwork2,因为Struts2基于Xwork2开发,变化更多的体现在名称上,所以平时甚少关注。这些天看了一下Apache上的文档,觉得Struts2更加优雅一些,至少Action变成了一个纯粹的POJO,而无须再实现任何一个接口。

Struts2不再提供Webwork2内置的IoC容器支持,转而将Spring作为ObjectFactory的缺省实现。所有由Struts2创建的对象都是由ObjectFactory实例化,ObjectFactory可以集成各种IoC容器,例如Spring、Pico、 Plexus等等.

在拦截器方面,Struts2不再支持AroundInterceptor,如果要用到AroundInterceptor ,则必须单独引入Webwork2的相关类,或者重写自己的拦截器。这一点是我不太理解的地方,不知出于什么考虑。

 

Struts2全面引入了Dojo,大概是对以前Webwork2在客户端实现的不满吧。例如不再支持Webwork2的richtexteditor,而以Dojo的编辑器取代。说实话,Webwork2了的rich text编辑器确实不太好用,有不少bug。还把Webwork2的Datepicker标签换成了Dojo实现的datetimepicker标签。

 

对开发人员而言,Struts2在Action映射方面的改进值得关注,尤其是借鉴了Spring的方式,提供了对action名称通配符的支持。在Webwork2里,需要在xwork.xml里以如下格式定义action:

<action name="Logon" class="tutorial.Logon">
  <result type="redirectAction">Menu</result>
  <result name="input">/Logon.jsp</result>
</action>

 

而在Struts2中,则可以引入通配符,形如:

<action name="*Logon" class="tutorial.Logon">
  <result type="redirectAction">Menu</result>
  <result name="input">/Logon.jsp</result>
</action>

这样,任何以Logon结尾用作登录验证的Action,例如NewUserLogon,都可调用tutorial.Logon的一个实例。

 

Struts2还引入一个消息存储拦截器MessageStoreInterceptor用于存放、检索各种提示、错误消息等等,在一个session生命期中都是可用的。

 

分享到:
评论
20 楼 KimHo 2008-12-07  
喜欢struts2的,飘过,呵呵
19 楼 ynstudio 2008-08-16  
struts2,我认为很值得了解使用。我一直讨厌struts1的繁琐,一些硬性的规定,特别是讨厌actionform,特别是你熬夜加班的时候,我从使用struts1开始就不使用其actionform,特别是用了hibernate后。

而struts2不但是不再用actionform,而且提供了更好的方式。

总之,如果你有新项目强烈建议用struts2,特别是了解一下appfuse导出的SSH组合,你会喜欢上的,代码量确实大大减少。
18 楼 ynstudio 2008-08-16  
saturn 写道
struts2 和struts1的最大区别是 struts2运用在xwork上,使用了OGNL


区别还是很大的,带来的便利更大。
17 楼 ynstudio 2008-08-16  
<div class='quote_title'>elvewyn 写道</div>
<div class='quote_div'>
aninfeel 写道
Action变成了一个纯粹的POJO,现在正为这个郁闷呢,每个action多了一些只有特定情况才会用到的property,看起来很不爽,反而觉得以前的frombean好了。

Webwork中有ModelDriven。和formbean差不多。不知道Struts2中有没有保留。不过这种模式应该还是可以用的。</div>
<p>保留了。</p>
16 楼 saturn 2008-08-15  
struts2 和struts1的最大区别是 struts2运用在xwork上,使用了OGNL
15 楼 tibetjungle 2008-07-15  
<div class='quote_title'>elvewyn 写道</div>
<div class='quote_div'>
aninfeel 写道
Action变成了一个纯粹的POJO,现在正为这个郁闷呢,每个action多了一些只有特定情况才会用到的property,看起来很不爽,反而觉得以前的frombean好了。

Webwork中有ModelDriven。和formbean差不多。不知道Struts2中有没有保留。不过这种模式应该还是可以用的。</div>
<p>感觉modeldriven用起来也还是挺繁琐的。某些时候觉得还是reuqest.getParameter更干脆!</p>
14 楼 tibetjungle 2008-07-15  
aninfeel 写道
Action变成了一个纯粹的POJO,现在正为这个郁闷呢,每个action多了一些只有特定情况才会用到的property,看起来很不爽,反而觉得以前的frombean好了。

这点深有同感啊!还是觉得formbean好用。
这是解藕的代价吗?
13 楼 elvewyn 2008-06-12  
aninfeel 写道
Action变成了一个纯粹的POJO,现在正为这个郁闷呢,每个action多了一些只有特定情况才会用到的property,看起来很不爽,反而觉得以前的frombean好了。

Webwork中有ModelDriven。和formbean差不多。不知道Struts2中有没有保留。不过这种模式应该还是可以用的。
12 楼 zhongli 2008-06-04  
偶还是喜欢webwork,一直用webwork,struts2的通配符比较实用,偶把它引进到webwork,其他的好像没什么好东东了,一直不用struts2还有个原因是struts是基于java 1.5的,偶的很多客户都还是1。4的
11 楼 cuiyi.crazy 2008-06-04  
crysoul 写道
aninfeel 写道
Action变成了一个纯粹的POJO,现在正为这个郁闷呢,每个action多了一些只有特定情况才会用到的property,看起来很不爽,反而觉得以前的frombean好了。

你把property合成一个class,和formbean不是一回事么。而且以前formbean里面的property只能是string。

变来变去,返璞归真了
在struts出现前,我们是不是就这么用的啊?!
唯一的不同是现在更注重了分层;
再者就是给了更好的实践约束,便于团队风格相近。
10 楼 crysoul 2008-05-31  
aninfeel 写道
Action变成了一个纯粹的POJO,现在正为这个郁闷呢,每个action多了一些只有特定情况才会用到的property,看起来很不爽,反而觉得以前的frombean好了。

你把property合成一个class,和formbean不是一回事么。而且以前formbean里面的property只能是string。
9 楼 wjywilliam 2008-05-31  
本人今年开始做struts2的项目,以前多年做struts的,感觉struts2确实很强大,在配置上的灵活和Tag的用法简单上都有很大的提高,至少在开发效率上确实提高了许多,把action作为一个POJO来运用,省掉了FormBean确实省掉了很多的麻烦跟代码,代码量立刻下降!而上上楼那位兄弟说的可以把以前的FormBean作为属性注入到ACTION当中,而且比以前更加方便了。
8 楼 icefire 2008-05-05  
偶还在用struts1也不打算用struts2了。
因为完全没有令人激动的特性!而且还听说变慢了!
7 楼 aninfeel 2008-05-05  
Action变成了一个纯粹的POJO,现在正为这个郁闷呢,每个action多了一些只有特定情况才会用到的property,看起来很不爽,反而觉得以前的frombean好了。
6 楼 aninfeel 2008-05-05  
重来不用集成的ajax
5 楼 wang19841229 2008-05-05  
个人感觉struts2的ajax的集成实在没有什么实用价值
4 楼 xmvigour 2008-05-05  
struts2如果要在Interceptor中使用spring 必须配置struts-spring-plugin
3 楼 hademon 2008-05-05  
虽然我不认为dojo可以商用化,但是我也完全不认为ext可以商用化,ext只是内部网站才可以使用的庞大的东西,当然是在国内而言。
2 楼 j_butterfly 2008-04-05  
我觉得 的Struts2和WebWork没有什么区别~~~有什么,其实就是一个东西嘛。Struts把webwork拿过来了嘛,我做的这个网站就用的struts2,感觉比struts好多了,用的都是webwork的思想!!我同事楼上的,我 这个网站用的就是EXT.js,友财网http://www.ucai8.com
1 楼 slaser 2008-03-31  
我觉得对dojo的支持让我很失望,dojo根本无法达到商用的要求。所以基本上,我们现在的项目还是老老实实的在客户端使用ext-js.

相关推荐

    struts2与webwork2

    在探讨Struts2与WebWork2的联系与区别的过程中,我们不得不提到它们的历史渊源以及在Java Web开发领域中的地位。Struts2框架实际上可以视为WebWork2框架的继承者,两者之间的关系紧密而复杂,下面将从多个角度深入...

    Struts2-Webwork2-DWR

    Struts2、Webwork2 和 DWR 是三个在 Web 开发领域中至关重要的技术,尤其在构建企业级的 WEB2.0 应用程序时。接下来,我们将详细探讨这三个技术的核心概念、工作原理以及它们之间的关系。 **Struts2** 是一个基于 ...

    struts2+webwork+spring.rar

    此外,Spring MVC是Spring框架的一部分,用于构建Web应用,它与Struts2一样基于MVC模式,但提供了更多灵活性和可扩展性。 将Struts2、WebWork和Spring结合在一起,可以创建出一个强大的企业级应用架构。Struts2负责...

    struts2建立流程

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...

    struts1,struts2,webwork,线程安全问题

    #### 二、Struts2与线程安全问题 Struts2框架设计时充分考虑了线程安全问题,主要体现在其默认使用“prototype”作用域来管理`Action`类实例,这意味着每次请求都会创建一个新的`Action`实例。 - **Struts2中...

    struts2对webwork的改进

    与WebWork相比,Struts2的拦截器链更加强大,可以更方便地组合和自定义拦截器,实现复杂的业务逻辑。 5. **表达式语言(EL)和OGNL**: Struts2采用OGNL(Object-Graph Navigation Language)作为默认的表达式语言...

    struts2的教程,struts2整合了struts1+webwork.基于MVC的Framework

    struts2的教程,struts2整合了struts1+webwork.基于MVC的Framework struts2的教程,struts2整合了struts1+webwork.基于MVC的Framework

    Struts 2 技术详解:基于WebWork核心的MVC开发与实践

    **Struts 2与WebWork的结合**: Struts 2 的核心技术基础是WebWork,它在Struts 1的基础上进行了许多改进,如更强大的表达式语言(OGNL)、拦截器机制、更简单的配置等。WebWork的这些特性被集成到Struts 2中,使得...

    Struts2和Webwork远程命令执行漏洞分析1

    Struts2和Webwork远程命令执行漏洞主要源于Apache Struts2框架中的一个设计缺陷,该框架使用OGNL(Object-Graph Navigation Language)表达式来处理用户输入,这为恶意攻击者提供了可乘之机。该漏洞发生在Struts2的...

    struts2开发入门以及webWork开发入门文档

    - `webwork2开发指南.pdf`则是针对WebWork框架的指导手册,帮助理解WebWork的设计原理和用法。 通过以上文档,你可以系统地学习Struts2和WebWork的基本概念、核心组件以及实际应用。在掌握这两个框架的基础上,...

    浅谈Struts2与Webwork的不同和相同点

    在视图层,Struts2提供了自己的标签库,这些标签在功能上与WebWork的标签相似,但有所增强。Struts2的标签使得在JSP页面上操作和展示数据变得更加简单,减少了硬编码,提高了代码的可读性和复用性。同时,Struts2...

    Struts2 WebWork的更新产品

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品

    struts2中文学习文档

    从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...

    [Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版) 1/12

    不用多说了,Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版),解压出来有200多M,因为权限不怎么够,我一共分了12卷,是一本不可多得的好书。第一卷附目录: 第1章 Struts 2概述,第2章 Struts 2下的Hello...

    Struts2工作流程图

    Struts 2 与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts 1的血统,而是继承WebWork的血统。...

    Struts2V3.0-(中文)参考手册

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...

    struts2JAR包

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...

    程序天下-Struts 2技术详解:基于WebWork核心的MVC开发与实践(原代码2)

    是学习struts 2很好的资料,这是原代码,分成两个压缩包.

    struts2必须jar包

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...

    Struts2与Struts1区别

    Struts2 和 Struts1 是两个著名的 Java Web 开发框架,它们都出自 Apache Software Foundation,但有着显著的区别。Struts1 是早期的 MVC 框架,而 Struts2 则是在 WebWork 框架的基础上发展起来的,它吸收了 Struts...

Global site tag (gtag.js) - Google Analytics