最近研究了一下srtuts2.0,将一些心得准备以一个系列的方式列一下。
一、MVC思想及其优势
MVC思想将一个应用分成三个部分:Model(模型)、View(视图)、Controller(控制器)。这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。
MVC特点:1、多个视图对应一个模型。2、模型返回的数据与显示逻辑分离,模型数据可以应用任何显示技术,例如JSP,Velocity,或者生成Excel。3、应用被分成三层,降低了各层之间的耦合,提高可扩展性。4、MVC更符合软件工程思想,不同的层各司其职。
常用的MVC框架介绍:全世界第一个MVC框架是struts,2001年出现。现在比较流行的MVC框架罗列如下:
JSF:他是标准,这是他的优势。但也有一些缺点:用户较少,资源不是很丰富,和Servlet API耦合;成熟度还有待于进一步提高。
Tapestry:具有很好的分工合作。
Spring MVC框架:设计比较好,但是使用起来比较复杂,和Servlet API耦合,有人说Spring有过度设计的危险,但是我有些不理解这句话的含义。
Webwork,类似struts2,较好的设计,从ServletAPI分离。
Model1和model2:
Model1:JSP页面接受处理客户端请求,对请求处理后直接做出相应。用javabean处理业务逻辑,这个时候JSP既做控制器又做视图。
Model2:Servlet作为前端的控制器,JSP作为视图,javabean作为控制器。
二、struts2概述
Struts1的缺点:
1、 支持的表示层技术单一
Struts1只支持JSP视图技术,当然,通过某些不自然的整合可以支持velocity等技术。
2、 struts与servlet API严重耦合,难于测试
比如说:如果要对struts1的Action的execute进行测试的时候,该方法有四个参数:ActionMapping、ActionForm、HttpServletRequest和HttpServletResponse,初始化这四个参数比较困难,尤其是HttpServletRequest和HttpServletResponse两个参数,因为这两个参数通常由容器进行注入的。如果脱离web服务器,Action的测试是很困难的。
3、 struts1的侵入性太大
一个Action中包含了大量的strutsAPI,比如ActionMapping、ActionForm、ActionForwad。这种侵入式的设计最大的弱点在于:切换框架会相当困难,代码复用较低,不利于重构,对struts的依赖太严重。
Struts2则在Webwork的优良基础设计的基础上,进行了一次巨大的升级(我是这样认为的)。注意,struts2不是基于struts1,而是基于webwork的。Struts2针对struts1的不足,提出了自己的解决方案(实际上大多是webwork的解决方案)。
是使用struts2还是使用webwork?本人倾向使用struts2,原因:1、毕竟struts2是对webwork的一次升级。2、webwork已经不再升级。
Struts2的大致处理流程:
1、 浏览器发送请求,如login.action
2、 核心的控制器FilterDispatcher根据请求决定调用合适的Action。
3、 Struts2的拦截器链自动对请求应用通用功能,例如验证、填充参数、文件上传等。
4、 调用Action的execute方法,实际上是调用Action代理的方法。(基于AOP理论)
5、 将结果信息输出到视图中,视图可以是JSP,FreeMarker,Velocity甚至是JSON。
<o:p> </o:p>
比较Struts1和Struts2
<o:p> </o:p>
|
Struts1
|
Struts2
|
侵入性方面
|
非常大
|
较小
|
线程模式方面
|
Struts1 Action是单例模式并且必须是线程安全的,因为只有一个Action处理请求。
|
为每个请求创建一个实例,因此没有线程安全问题。
|
ServletAPI依赖方面
|
完全依赖ServletAPI
|
完全不依赖
|
可测试方面
|
脱离容器测试很困难(一般借助插件,我没有测试过)
|
可以脱离容器测试
|
封装请求参数对比
|
使用ActionForm对象,并且所有的ActionForm需要继承一个基类:ActionForm。
|
可以是Action的属性,也可以是一个纯粹的POJO。
|
表达式语言
|
可以使用EL
|
整合了一个强大的表达式语言OGNL。并且使用了valueStack技术。
|
类型转换:
|
ActionForm通常都是String类型,Struts1使用Commons-Beanutils进行类型转换,并且不可以配置。
|
Struts2使用OGNL进行类型转换,同时提供很好的扩展。
|
数据校验
|
可以重写ActionForm的validate方法或者使用框架来完成校验。
|
同样struts2同样支持重写ActionSupport的validate方法和框架,同时struts2支持ajax校验。
|
配置文件
|
配置文件比较复杂,并且项目很大的时候造成配置文件臃肿。
|
可以有多个配置文件
|
分享到:
- 2007-10-30 08:09
- 浏览 2334
- 评论(3)
- 论坛回复 / 浏览 (3 / 4138)
- 查看更多
相关推荐
Struts2是一个基于Java EE平台的MVC(Model-View-Controller)框架,由Apache基金会维护,旨在简化Web应用程序的开发。MVC设计模式是一种软件设计模式,它将应用程序分为三个核心部分:模型(Model)、视图(View)...
**Struts2概述** Struts2的核心设计目标是简化MVC应用的开发,通过提供一系列的插件和拦截器,使得开发者可以方便地处理请求、响应以及业务逻辑。它集成了许多其他开源框架,如FreeMarker和Velocity模板引擎、Tiles...
一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优秀特性,并融合了WebWork框架的优点。Struts2的目标是提供一个简单、高效且可扩展的框架,帮助开发者构建健壮的web应用程序。 二...
#### WebWork/Struts2概述 WebWork/Struts2是Struts1的后续版本,它在设计上做了重大改进,提供了更加强大且灵活的功能。主要特点如下: - **优点**:架构简单易懂,易于扩展;标签库支持Freemarker或Velocity等模板...
1.1 MVC思想概述2 1.1.1 Web技术的发展2 1.1.2 Model 1和Model 24 1.1.3 MVC思想及其优势6 1.1.4 常用的MVC框架7 1.2 Struts 2的起源和背景8 1.2.1 Struts 1简介及存在的问题9 1.2.2 WebWork简介12 ...
第1章 Struts 2概述,第2章 Struts 2下的HelloWorld,第3章 Struts 2基础,第4章 深入Struts 2,第5章 Struts 2的类型转换,第6章 文件的上传和下载.,第7章 Struts 2的拦截器,第8章 Struts 2的输入校验,9.2 ...
一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是Action类,它是业务逻辑和视图之间的桥梁。通过使用拦截器,Struts2能够...
1.Struts 2权威指南——第1章 Struts 2概述.doc 2.truts 2权威指南——第2章 Struts 2下的HelloWorld.doc 3.Struts 2权威指南——第3章 Struts 2基础.doc 4.Struts2.0系列(1-15) 5.Struts2中用Spring实现IoC.doc 6....
#### 一、Struts2概述 Struts2是Struts框架的第二代版本,它是在Struts1的基础上进行了大量的改进和完善后诞生的。Struts2不仅继承了Struts1的核心思想,即MVC(Model-View-Controller)设计模式,还融合了WebWork...
#### Struts2概述与MVC架构 - **背景**:随着计算机技术的进步,特别是互联网技术的飞速发展,软件系统的复杂度日益增加,传统的软件开发方式已经难以满足现代软件工程的需求。在这样的背景下,面向服务架构(SOA)...
一、Struts2概述 Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并解决了其局限性,引入了更多现代Web应用开发的需求。Struts2的核心是Action类,它负责处理用户的请求,与业务逻辑交互,并通过Result...
#### Struts2 概述与来历 - **Struts2**是由Apache组织维护的一款开源MVC框架,主要应用于Java Web开发领域。其定位仅作为表现层(MVC)框架,专注于处理前端用户交互逻辑。 - **Struts1**是Struts2的前身,同样是...
#### 一、Struts2 概述与历史背景 **Struts2** 是一款流行的 Java Web 开发框架,它遵循 MVC (Model-View-Controller) 设计模式,旨在简化 Web 应用程序的开发过程。Struts2 提供了一种统一的方法来构建 Web 应用...
#### 一、Struts2 概述 Struts2作为一款流行的Web应用框架,是基于MVC(Model-View-Controller)设计模式的增强版本,它继承了Struts1.x的一些特性,并在此基础上进行了大量的改进与优化。Struts2能够很好地解决...
1. **Struts2概述** Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并解决了其局限性,提供了更优秀的行动控制器、拦截器机制以及强大的插件支持。Struts2的核心设计目标是简化MVC应用的开发,使...
#### Struts2概述 Struts2是Apache Software Foundation支持的一个开源项目,它是Struts1的下一代版本,继承了Struits1的优点,并在此基础上进行了大量的改进和优化,使之成为了一个更加成熟、稳定且功能强大的Web...