Struts2重新学习2之struts2和struts1的区别

1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的POJO类都可以用 作Struts 2的Action。
2) 线程模式方面的对比:Struts 1
Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts 1
Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的;Struts 2
Action对象为每一个请求产生一个实例,因此没有线程安全问题。
3) Servlet依赖方面的对比:Struts 1
Action依赖于Servlet API,因为Struts 1
Action的execute方法中有HttpServletRequest和HttpServletResponse方法。Struts 2
Action不再依赖于Servlet API,从而允许Action脱离Web容器运行,从而降低了测试Action的难度。
当然,如果Action需要直接访问HttpServletRequest和HttpServletResponse参数,Struts 2
Action仍然可以访问它们。但是,大部分时候,Action都无需直接访问HttpServetRequest和
HttpServletResponse,从而给开发者更多灵活的选择。
4) 可测性方面的对比:测试Struts 1
Action的一个主要问题是execute方法依赖于Servlet
API,这使得Action的测试要依赖于Web容器。为了脱离Web容器测试Struts 1的Action,必须借助于第三方扩展:Struts
TestCase,该扩展下包含了系列的Mock对象(模拟了HttpServetRequest和HttpServletResponse对象),从而
可以脱离Web容器测试Struts 1的Action类。Struts 2 Action可以通过初始化、设置属性、调用方法来测试。
5)
封装请求参数的对比:Struts
1使用ActionForm对象封装用户的请求参数,所有的ActionForm必须继承一个基类:ActionForm。普通的JavaBean不能用
作ActionForm,因此,开发者必须创建大量的ActionForm类封装用户请求参数。虽然Struts
1提供了动态ActionForm来简化ActionForm的开发,但依然需要在配置文件中定义ActionForm;Struts
2直接使用Action属性来封装用户请求属性,避免了开发者需要大量开发ActionForm类的烦琐,实际上,这些属性还可以是包含子属性的Rich
对象类型。如果开发者依然怀念Struts 1 ActionForm的模式,Struts
2提供了ModelDriven模式,可以让开发者使用单独的Model对象来封装用户请求参数,但该Model对象无需继承任何Struts
2基类,是一个POJO,从而降低了代码污染。
6) 表达式语言方面的对比:Struts
1整合了JSTL,因此可以使用JSTL表达式语言。这种表达式语言有基本对象图遍历,但在对集合和索引属性的支持上则功能不强;Struts
2可以使用JSTL,但它整合了一种更强大和灵活的表达式语言:OGNL(Object Graph Notation
Language),因此,Struts 2下的表达式语言功能更加强大。
7) — 绑定值到视图的对比:Struts 1使用标准JSP机制把对象绑定到视图页面;Struts 2使用“ValueStack”技术,使标签库能够访问值,而不需要把对象和视图页面绑定在一起。
8)
类型转换的对比:Struts 1 ActionForm 属性通常都是String类型。Struts
1使用Commons-Beanutils进行类型转换,每个类一个转换器,转换器是不可配置的;Struts
2使用OGNL进行类型转换,支持基本数据类型和常用对象之间的转换。
9) 数据校验的对比:Struts
1支持在ActionForm重写validate方法中手动校验,或者通过整合Commons alidator框架来完成数据校验。Struts
2支持通过重写validate方法进行校验,也支持整合XWork校验框架进行校验。
10) Action执行控制的对比:Struts
1支持每一个模块对应一个请求处理(即生命周期的概念),但是模块中的所有Action必须共享相同的生命周期。Struts
2支持通过拦截器堆栈(Interceptor
Stacks)为每一个Action创建不同的生命周期。开发者可以根据需要创建相应堆栈,从而和不同的Action一起使用。
11)
捕获输入:Struts1
使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经
常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存
在的JavaBean(仍然会导致有冗余的javabean)。Struts
2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过
web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种
ModelDriven 特性简化了taglib对POJO输入对象的引用。

Struts2重新学习2之struts2和struts1的区别,布布扣,bubuko.com

时间: 2024-10-23 19:37:09

Struts2重新学习2之struts2和struts1的区别的相关文章

Struts2框架学习第一章——Struts2概述

本章要点 —  Web应用的发展 —  Model 1和Model 2 —  MVC思想 —  MVC模式的优势 — 常用MVC框架及其特征 —  Struts 1的基本结构及其存在的问题 —  WebWork的基本结构 —  Struts 2的起源 —  Struts 2的框架架构 —  Struts 2的标签库 —  Struts 2的控制器组件 —  Struts 1和Struts 2的对比 Struts 1是全世界第一个发布的MVC框架,它由Craig McClanahan在2001年发

Struts2框架学习(二) Action

Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器拦截请求,创建代理Action对象,执行方法,返回结果,界面跳转. 拦截器解析请求路径,获取Action的名称,到配置文件中查找action的完整类名,利用反射创建对象. 每请求一次,就创建一个对象,所以action是多例的,也是线程安全的. 2,关系 请求的路径和配置文件的对应关系: 配置文件中包

Struts2框架学习(三) 数据处理

Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:ValueStack一种数据结构,操作数据的方式为:先进后出 OGNL : Object-GraphNavigation Language(对象图形导航语言)将多个对象的关系使用一种树形的结构展现出来,更像一个图形,那么如果需要对树形结构的节点数据进行操作,那么可以使用 对象.属性 的方式进行操作,OGNL技

Struts2学习第一天——struts2基本流程与配置

struts2框架 什么是框架,框架有什么用? 框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率. 学习框架 ,清楚的知道框架能做什么? 还有哪些工作需要自己编码实现 ? 什么是struts2框架,它有什么用? Struts 2是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架. 其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大.Struts 2以WebWork为核心 struts2=struts1+

struts2 struts1.x 区别

此文转于http://www.blogjava.net/sterning/archive/2007/07/17/130892.html Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用.作为最成功的Web框架,Struts自然拥有众多的优点:MVC 2模型的使用.功能齐全的标志库(Tag Library).开放源代码. 但是,正所谓“没有最好,只有更好”,Struts1.x自身也有不少的缺点:需要编写的代码过多,容易引起“类爆炸”.单元测试困难.这些缺点随着

J2EE学习篇之--Struts2技术详解

前面说到了Struts1的相关知识,下面来说一下Struts2的相关知识,我们知道现在Struts2使用的比Struts1多,Struts2已经替代Struts1成为主流的框架了... 摘要 Struts2是在WebWork2基础发展而来的.和struts1一样, Struts2也属于MVC框架.不过有一点大家需要注意的是:尽管Struts2和Struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的.那么既然有了struts1,为何还要推出struts

Struts2 + Spring 学习(一)搭建struts开发环境

·为Web应用增加Struts2支持 1. 登陆struts2官网下载struts2的最新版,本文所用的是Struts 2.3.16.2 我们所下载的压缩包内内容应给如下 其中,apps包含了struts2的实例应用,docs包含了struts2的相关文档,lib包含了Struts2框架的核心类库以及struts2的第三方插件类库,src包含了struc包含了struts2框架的全部源码. 2. 在Eclipse新建Web工程,将是所用到的类库放到WEB-INF/路径下 3. 编辑Web应用的w

Struts2框架学习

Struts2框架 一.一个mini Struts框架的实现 1.首先遵循MVC模式创建包 2.在Struts.xml文件里配置action 3.用dom4j来解析xml 4.用filter来实现拦截作用   好处:1.降低了类与类之间的关联(解耦和)   2.如果你要增加一些功能的话  可以在filter里面增加 实现的mini Struts工程结构: 具体实现的代码: public class HelloAction { public String execute(){ System.out

Struts2框架学习(一)

Struts2框架学习(一) 1,Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发.框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2,Struts2框架的流程原理 1)请求先到达Filter中央控制器 2)然后为Action创建代理类 3)将各个服务存放在拦截器中,执行完拦截器后再去执行action类行action类,action类调用service,再调用dao 4)得到结果字符串,创建result对象 5)转向相应的视图.