`

Struts2和Strtus1.x比较

阅读更多

Struts2Strtus1.x行全面的比让读者了解框架各自的缺点,以便于在自己的目中,根据实际情况,选择合适的框架,两者行比总结了如下表分析比

特性

Struts1.x

Struts2

Action

Struts1.x要求Action展自一个抽象基Struts1.x的一个共有的问题是面向抽象类编程而不是面向接口程。

Struts2Action类实现了一个Action接口,同其他接口一起来实现选择和自定的服Struts2提供一个名叫ActionSupport的基实现一般使用的接口。当然,Action接口不是必的。任何使用execute方法的POJO象可以被当作Struts 2Action象来使用。

线程模型

Struts1.x Action,因只有一个例来控制所有的求。策略造成了一定的限制,并且给开发带来了外的烦恼Action源必线安全或者同的。

Struts2 Action为每一个求都例化象,所以没有线安全的问题。(践中,servlet容器给每一个多丟弃的象,并且不会致性能和垃圾回收问题)。

Servlet

Struts1.xActionservlet API,当Action,以HttpServletRequestHttpServletResponse参数传给execute方法。

Struts2Action和容器无Servlet上下文被表现为简单Maps,允Action被独立的测试Struts2Action可以访问最初的(如果需要的)。但是,尽可能避免或排除其他元素直接访问HttpServletRequestHttpServletResponse

测试Struts1.x的主要问题execute方法暴露了Servlet API使得测试要依于容器)。第三方的展,如Struts TestCase,提供了一套Struts1的模拟对象(来测试)。

Struts2Action可以通初始化、置属性、用方法来测试。依注入的支持也是测试变得更简单

获输

Struts1.x使用ActionForm象来捕获输入。象Action,所有的ActionForm须扩展基。因其他的JavaBean不能作ActionForm使用,开发建多余的来捕获输入。DynaBeans可以被用来作替代ActionForm建。但是,开发者可能是在重新描述()存在的JavaBean(仍然会致有冗余的javabean)。

Struts2直接使用Action属性作为输入属性,消除了第二个象的需求。入属性可能是有自己()属性的rich型。Action属性能web面上的taglibs访问Struts2也支持ActionForm模式。rich型,包括业务对象,能用作/象。这种ModelDriven 特性化了taglibPOJO象的引用。

表达式

Struts1.x整合JSTL,所以它使用JSTL的表达式言。表达式言有基本的象移,但是集合和索引属性的支持很弱。

Struts2使用JSTL,但是也支持一个更大和灵活的表达式言--"Object Graph Notation Language" (OGNL)

值绑定到

Struts1.x使用JSP机制来象到面上下文。

Struts2使用“ValueStack”,使taglib够访问值而不需要把你的面(view)和定起来。ValueStack策略允一系列名称相同但型不同的属性重用面(view)。

转换

Struts1.xActionForm属性常都是StringStruts 1.x使用Commons-Beanutils转换转换每一个,而不是为每一个例配置。

Struts2使用OGNL转换。提供基本和常用象的转换

验证

Struts1.x支持在ActionFormvalidate方法中手,或者通Commons Validator展来校。同一个可以有不同的校内容,但不能校象。

Struts2支持通validate方法和XWork框架来行校XWork框架使用属性类类型定的校和内容校,来支持chain子属性

Action行控制

Struts1.x支持一个模独的Request Processors(生命周期),但是模中的所有Action共享相同的生命周期。

Struts2支持通过拦截器堆Interceptor Stacks为每一个Action建不同的生命周期。堆根据需要和不同的Action一起使用。

 

 

六、       结论

前面已经简要介Struts2的起源,并详细对比了Struts2Struts1.x的差异,应该对Struts2的基有所了解了——包括高的框架概念和基求流程,并理解Struts1.xStruts2两者之Action方面的差Struts2对拦截器与IoC的支持,而在Struts1.x中,些特性是很想象的。

应该明白:Struts2WebWork的升,而不是Struts 1.x的升Struts 2提供了与Struts1.x的兼容,但已不是Struts1.x的升于已有Struts1.x开发经验开发者而言,Struts1.x开发经验对Struts2并没有太大的帮助;相反,于已WebWork开发经验开发者而言,WebWork开发经验对Struts2开发将有很好的借

 

<script></script> 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics