struts2与struts1.2的对比

2023-11-20 14:18
文章标签 struts2 对比 struts1.2

本文主要是介绍struts2与struts1.2的对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 特性

Struts 1

Struts 2

ACTION

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

Struts2 action类实现了一个action接口,连同其他接口一起来实现可选择和自定义的服务,struts2提供一个名叫actionSupport的基类来实现一般使用的接口,虽然,Action接口不是必须的,任何使用execute方法的POJO对象可以被当做struts2action对象来使用

线程模型

Struts 1 action 类是单例类,因为只有一实例来控制所有的请求,单例类策略照成了一定的限制并且给开发带来了额外的烦恼。Action资源必须是线程安全或者同步的

Struts2 action 对象为每一个请求实例化对象,所以没有线程安全的问题,(实践中servlet容器产生许多丢弃的对象对于每一个请求,多于一个的对象并不影响垃圾收集)

Servlet 依赖

Struts1 action类依赖于servlet APIHTTPServletRequestHttpServletResponse 作为参数传递给execute方法当Action被调用时。

Strtuts2 action不和容器有关。Servlet上下文被表现为简单的MAps,允许Action被独立测试。Struts2 action 可以访问最初的请求和响应,如果需要的话。然而,其他的架构元素减少或者排除直接访问HttpServletRequest或者HttpServletResponse的需要。

易测性

测试struts1的主要障碍是execute方法暴露了servlet API.第三方的扩展,struts测试用例,提供struts1的集合对象。

Struts2action可以通过action来测试,设置属性,然后调用方法。依赖注入的支持也使测试变得简单。

接受输入

Struts1使用ActionForm对象来捕获输入,像Action一样,所有的ActionForm必须扩展基类,因为其他的javaBean不能作为ActionForm使用,开发者经常创建多余的类来捕获输入。DynaBeans可以被用来作为替代ActionForm的类

Struts 2Action属性作为输入属性,排除第二个输入对象的需要。输入属性可能有丰富的对象类型这些类型有他们自己的属性。Action的属性可以通过标签库来访问。Struts2也支持ActionForm形式。丰富的对象类型,包含业务或者对象,可以被当做输入或者输出对象来使用。模型驱动特性简化标签对POJO输入对象的引用。

表达式语言

Struts1 整合JSTL,所以它使用JSTL的表达式语言。表达式语言有基本的图形对象移动,但是相对很弱的集合被索引的属性支持。

Struts 2使用JSTL,但是框架也支持更强大和更灵活的表达式,叫做“对象图形符号语言”(OGNL

将值绑定到视图上

Struts1 使用标准JSP机制来绑定对象页面上下文

Struts2使用“ValueStack”技术为了标签可以不用连接你的视图到对象的表现形式来访问值。ValueStack策略允许重用视图

类型转换

Struts 1ActionForm属性经常都是String的。Struts1使用Commons-Beanutils来类型转换。转换每一个类型,并不是为每一个实例配置。

Struts2使用OGNL类型转换。框架包含转换器为基本的和共同的对象类型和原始类型。

验证

Struts1支持手动验证,凭借ActionFormvalidate方法,或者通过扩展的公用验证器。类可以有不同的验证上下文来为相同的类,但是不能不包括验证子对象。

Struts2支持手动验证凭借validate方法和XWork验证框架。Xwork验证框架支持一连串的验证子属性使用的验证,为了属性类的类型和验证上下文而定义。

Action执行的控制

Struts1 支持独立的请求处理对于每一个模型,但是所有在模型中的Action必需共享一个生命周期。

Struts2支持在每一个Action基础上凭借拦截机创建不同的生命周期。自定义机可以被创建并且使用不同的所需的action

这篇关于struts2与struts1.2的对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/395204

相关文章

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has