Struts2概述及与Struts1的对比

简介: Struts2 概述1,仍然是一个基于请求响应的MVC框架2,Struts2不是Struts1的升级3,Struts2与Struts1的体系结构差距非常大4,Struts2采用了另一个MVC框架WebWork的核心设计5,Struts2更优秀:松耦合设计。


Struts2 概述


1,仍然是一个基于请求响应的MVC框架

2Struts2不是Struts1的升级

3Struts2Struts1的体系结构差距非常大

4Struts2采用了另一个MVC框架WebWork的核心设计

5Struts2更优秀:松耦合设计。。

 

Struts1Struts2的对比


1Action方面


Struts1Action必须继承;Struts1是单例的,存在线程安全问题;控制执行方面,Struts1固定不变的

Struts2Action可以不继承;Struts2是多例的,没有线程安全问题;控制执行方面,Struts2通过拦截器,可以改变执行流程,灵活配置的


2,Servlet API依赖与可测试性


Struts1Action测试性不好,Struts1中的Action需要依赖Servlet API,因为需要容器支持,因为在Action依赖Servlet API

Struts2Action测试性不好,Struts2中的Actionk可以不用依赖ServletAPI,可以直接写一个单元测试完成,因为Struts2Aciton是一个POJO对象


3ActionForm方面


Struts1收集数据通常使用ActionForm,ActionForm还需要继承,使得ActionForm的复用率降低。另外项目非常大会建立很多ActionForm给维护带来工作量,但也有好处,数据的收集和控制进行很好的分离。

Struts2可以不用使用ActionForm来收集数据,直接让Action来收集 数据,但也可以采用类似ActionForm的方式来收集数据,Struts2采用ModelDriven的方式来支持类似Struts1ActionForm方式,所以Struts2更灵活。


4,类型转换与表达式语言方面


Struts1ActionForm的类型转换采用 commons-beanutils工具,而定义完成一个转换器,将对所有的ActionForm起作用,而不能针对某一个ActionForm来配置是否使用此类型的转换器。Struts1中我们通常使用JSTL作为显示层绑定数据的方式。

Struts2使用OGNL进行类型转换,功能更加强大,转换过程可以针对某个类型进行配置。;Struts2中我们可以使用功能更强大的表达式语言OGNLObject Graph Notation Language


5,校验


Struts1采用覆盖ActionForm中的validate()方法或采用验证框架commons validator来验证

Struts2支持使用覆盖validate()方法来完成验证,也支持验证框架XWork来验证。

 

 

 

 

 


目录
相关文章
|
4月前
|
XML 前端开发 Java
外文翻译:Struts框架介绍
外文翻译:Struts框架介绍
|
10月前
|
前端开发 Java Apache
struts2学习笔记
struts2学习笔记
|
Java API 数据安全/隐私保护
struts2学习笔记(下)
struts2学习笔记(下)
struts2学习笔记(下)
|
XML 前端开发 Java
struts2学习笔记(上)
struts2学习笔记(上)
struts2学习笔记(上)
|
Java
Struts2【配置】 (一)
上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…
80 0
Struts2【配置】 (一)
|
前端开发 Java
|
XML Java 数据格式
struts2+spring+mybatis整合小案例
最近学习ssm框架,模仿别人做了一个小案例 当然途中也遇到了蛮多的问题.借此机会.记录一下自己的过程 struts2+spring+mybatis的整合过程 1.说明: 个人采用的是deepin操作系统(深度linux)+Intellij Idea(相对与myeclipse我还是更喜欢idea 可能因为更智能)+tomcat7. 当然在windows下没什么不同,具
4221 0
|
开发框架 前端开发 Java
Struts 问题汇总|学习笔记
快速学习 Struts 问题汇总
|
Java
day27_Struts2学习笔记_04
一、contextMap中的数据操作 1、存数据:    需要熟悉 ActionContext类 和 ValueStack接口 的 API 。框架为我们存数据。 1.1、利用 ActionContext 存数据   我们先看看 ActionContext.class 的源码:  1.2、利用 ValueStack 存数据   a、如何获取ValueStack呢?   b、ValueStack中的getRoot()方法。
1799 0
|
Java 数据安全/隐私保护
day26_Struts2学习笔记_03
一、国际化概念(了解) 1、什么是国际化    软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。 2、什么需要国际化    程序:需要国际化。
1385 0