Struts1 有什么好处和区别呢 请问Java编程中 Struts2 和 比拟 (struts2框架)

Struts1 有什么好处和区别呢 请问Java编程中 Struts2 和 比拟 (struts2框架)

本文目录导航:

请问Java编程中,Struts2 和 Struts1 比拟,有什么好处和区别呢?

Apache Struts 2即是之前大家所熟知的WebWork 2。

在教训了几年的各自开展后,WebWork和Struts社区选择合二为一,也即是Struts 2Action 类: Struts1要求Action类承袭一个形象基类。

Struts1的一个普遍疑问是经常使用形象类编程而不是接口。

Struts 2 Action类可以成功一个Action接口,也可成功其余接口,使可选和定制的服务成为或许。

Struts2提供一个ActionSupport基类去成功 罕用的接口。

Action接口不是必定的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。

线程形式: Struts1 Action是单例形式并且必定是线程安保的,由于仅有Action的一个实例来解决一切的恳求。

单例战略限度了Struts1 Action能作的事,并且要在开发时特意小心。

Action资源必定是线程安保的或同步的。

Struts2 Action对象为每一个恳求发生一个实例,因此没有线程安保疑问。

(实践上,servlet容器给每个恳求发生许多可摈弃的对象,并且不会造成性能和渣滓回收疑问) Servlet 依赖: Struts1 Action 依赖于Servlet API ,由于当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。

Struts 2 Action不依赖于容器,准许Action脱离容器独自被测试。

假设须要,Struts2 Action依然可以访问初始的request和response。

然而,其余的元素缩小或许消弭了间接访问HttpServetRequest 和 HttpServletResponse的必要性。

可测性: 测试Struts1 Action的一个重要疑问是execute方法泄露了servlet API(这使得测试要依赖于容器)。

一个第三方裁减--Struts TestCase--提供了一套Struts1的模拟对象(来启动测试)。

Struts 2 Action可以经过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。

捕捉输入: Struts1 经常使用ActionForm对象捕捉输入。

一切的ActionForm必定承袭一个基类。

由于其余JavaBean不能用作ActionForm,开发者经常创立多余的类捕捉输入。

灵活Bean(DynaBeans)可以作为创立传统ActionForm的选用,然而,开发者或许是在从新形容(创立)曾经存在的JavaBean(依然会造成有冗余的javabean)。

Struts 2间接经常使用Action属性作为输入属性,消弭了对第二个输入对象的需求。

输入属性或许是有自己(子)属性的rich对象类型。

Action属性能够经过web页面上的taglibs访问。

Struts2也支持ActionForm形式。

rich对象类型,包含业务对象,能够用作输入/输入对象。

这种ModelDriven 个性简化了taglib对POJO输入对象的援用。

表白式言语: Struts1 整合了JSTL,因此经常使用JSTL EL。

这种EL有基本对象图遍历,然而对汇合和索引属性的支持很弱。

Struts2可以经常使用JSTL,然而也支持一个更弱小和灵敏的表白式言语--Object Graph Notation Language (OGNL). 绑定值到页面(view): Struts 1经常使用规范JSP机制把对象绑定到页面中来访问。

Struts 2 经常使用 ValueStack技术,使taglib能够访问值而不须要把你的页面(view)和对象绑定起来。

ValueStack战略准许经过一系列称号相反但类型不同的属性重用页面(view)。

类型转换: Struts 1 ActionForm 属性理论都是String类型。

Struts1经常使用Commons-Beanutils启动类型转换。

每个类一个转换器,对每一个实例来说是无法性能的。

Struts2 经常使用OGNL启动类型转换。

提供基本和罕用对象的转换器。

校验: Struts 1支持在ActionForm的validate方法中手动校验,或许经过Commons Validator的裁减来校验。

同一个类可以有不同的校验内容,但不能校验子对象。

Struts2支持经过validate方法和XWork校验框架来启动校验。

XWork校验框架经常使用为属性类类型定义的校验和内容校验,来支持chain校验子属性 Action口头的管理: Struts1支持每一个模块有独自的Request Processors(生命周期),然而模块中的一切Action必定共享相反的生命周期。

Struts2支持经过阻拦器堆栈(Interceptor Stacks)为每一个Action创立不同的生命周期。

堆栈能够依据须要和不同的Action一同经常使用。

Struts作为MVC 2的Web框架,自推出以来始终遭到开发者的追捧,失掉用宽泛的运行。

作为最成功的Web框架,Struts人造领有泛滥的好处:

springmvc和struts2的区别

SpringMVC 和Struts2的区别 1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就造成了二者的机制不同。

2. 性能:spring会稍微比struts快。

spring mvc是基于方法的设计,而sturts是基于类,每次发一次性恳求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心掌握像在servlet管理数据一样。

spring3 mvc是方法级别的阻拦,阻拦到方法后依据参数上的注解,把request数据注入出来,在spring3 mvc中,一个方法对应一个request高低文。

而struts2框架是类级别的阻拦,每次来了恳求就创立一个Action,而后调用setter getter方法把request中的数据注入;struts2实践上是通 setter getter方法与request打交道的;struts2中,一个Action对象对应一个request高低文。

3. 参数传递:struts是在接受参数的时刻,可以用属性来接受参数,这就说明参数是让多个方法共享的。

4. 设计思维上:struts愈加合乎oop(面向对象编程)的编程思维, spring就比拟审慎,在servlet上裁减。

5. intercepter的成功机制:struts有自己的interceptor机制,spring mvc用的是独立的AOP形式。

这样造成struts的性能文件量还是比spring mvc大,只管struts的性能能承袭,所以我感觉论经常使用过去讲,spring mvc经常使用愈加繁复,开发效率Spring MVC确实比struts2高。

spring mvc是方法级别的阻拦,一个方法对应一个request高低文,而方法同时又跟一个url对应,所以说从架构自身上spring3 mvc就容易成功restful url。

struts2是类级别的阻拦,一个类对应一个request高低文;成功restful url要吃力,由于struts2 action的一个方法可以对应一个url;而其类属性却被一切方法共享,这也就无法用注解或其余形式标识其所属方法了。

spring3 mvc的方法之间基本上独立的,独享request response数据,恳求数据经过参数失掉,解决结果经过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比拟乱,只管方法之间也是独立的,但其一切Action变量是共享的,这不会影响程序运转,却给咱们编码,读程序时带来费事。

6. 另外,spring3 mvc的验证也是一个亮点,支持JSR303,解决ajax的恳求更是繁难,只有一个注解@ResponseBody ,而后间接前往照应文本即可。

struts怎样读

struts[英][strʌts] [美][strʌts] 生词本扼要释义n.(框架的)支杆( strut的名词双数 );支柱;迟疑满志的步态;(尤指跳舞或扮演时)卖弄v.迟疑满志地走,昂首阔步( strut的第三人称双数 )易混杂的单词:STRUTS以下结果由 金山词霸 提供柯林斯高阶英汉词典 网络释义 百科释义迟疑满志地走;昂首阔步Someone who struts walks in a proud way, with their head held high and their chest out, as if they are very important. He struts around town like he owns the place.他在城里大摇大摆地闲逛,如同那是他的地盘。

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

25阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

25阅读