`
chenshuang1227
  • 浏览: 27091 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts2概述

阅读更多

  最近研究了一下srtuts2.0,将一些心得准备以一个系列的方式列一下。

一、MVC思想及其优势

MVC思想将一个应用分成三个部分:Model(模型)、View(视图)、Controller(控制器)。这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。

MVC特点:1、多个视图对应一个模型。2、模型返回的数据与显示逻辑分离,模型数据可以应用任何显示技术,例如JSPVelocity,或者生成Excel3、应用被分成三层,降低了各层之间的耦合,提高可扩展性。4MVC更符合软件工程思想,不同的层各司其职。

常用的MVC框架介绍:全世界第一个MVC框架是struts2001年出现。现在比较流行的MVC框架罗列如下:

JSF:他是标准,这是他的优势。但也有一些缺点:用户较少,资源不是很丰富,和Servlet API耦合;成熟度还有待于进一步提高。

Tapestry:具有很好的分工合作。

Spring MVC框架:设计比较好,但是使用起来比较复杂,和Servlet API耦合,有人说Spring有过度设计的危险,但是我有些不理解这句话的含义。

Webwork,类似struts2,较好的设计,从ServletAPI分离。

Model1model2

Model1JSP页面接受处理客户端请求,对请求处理后直接做出相应。用javabean处理业务逻辑,这个时候JSP既做控制器又做视图。

Model2Servlet作为前端的控制器,JSP作为视图,javabean作为控制器。

二、struts2概述

Struts1的缺点:

1、  支持的表示层技术单一

Struts1只支持JSP视图技术,当然,通过某些不自然的整合可以支持velocity等技术。

2、  strutsservlet API严重耦合,难于测试

比如说:如果要对struts1Actionexecute进行测试的时候,该方法有四个参数:ActionMappingActionFormHttpServletRequestHttpServletResponse,初始化这四个参数比较困难,尤其是HttpServletRequestHttpServletResponse两个参数,因为这两个参数通常由容器进行注入的。如果脱离web服务器,Action的测试是很困难的。

3、  struts1的侵入性太大

一个Action中包含了大量的strutsAPI,比如ActionMappingActionFormActionForwad。这种侵入式的设计最大的弱点在于:切换框架会相当困难,代码复用较低,不利于重构,对struts的依赖太严重。

Struts2则在Webwork的优良基础设计的基础上,进行了一次巨大的升级(我是这样认为的)。注意,struts2不是基于struts1,而是基于webwork的。Struts2针对struts1的不足,提出了自己的解决方案(实际上大多是webwork的解决方案)。

是使用struts2还是使用webwork?本人倾向使用struts2,原因:1、毕竟struts2是对webwork的一次升级。2webwork已经不再升级。

Struts2的大致处理流程:

1、  浏览器发送请求,如login.action

2、  核心的控制器FilterDispatcher根据请求决定调用合适的Action

3、  Struts2的拦截器链自动对请求应用通用功能,例如验证、填充参数、文件上传等。

4、  调用Actionexecute方法,实际上是调用Action代理的方法。(基于AOP理论)

5、  将结果信息输出到视图中,视图可以是JSPFreeMarkerVelocity甚至是JSON

<o:p> </o:p>

比较Struts1Struts2

<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进行类型转换,同时提供很好的扩展。

数据校验

可以重写ActionFormvalidate方法或者使用框架来完成校验。

同样struts2同样支持重写ActionSupportvalidate方法和框架,同时struts2支持ajax校验。

配置文件

配置文件比较复杂,并且项目很大的时候造成配置文件臃肿。

可以有多个配置文件

 

分享到:
评论
3 楼 jingzhong 2008-03-28  
struts2是综合了  struts和webwork 而来的吧!
   不是webwork像struts2
2 楼 samuelyuan 2008-03-28  
<div class='quote_title'>chenshuang1227 写道</div><div class='quote_div'><p> <span style='font-size: small;'> </span><span style='font-size: small;'><span><span style='font-family: Times New Roman;'>Webwork</span></span><span style=''>,类似</span><span><span style='font-family: Times New Roman;'>struts2</span></span><span style=''>,较好的设计,从</span><span><span style='font-family: Times New Roman;'>ServletAPI</span></span><span style=''>分离。</span></span></p></div>struts2是从webwork发展而来的。
1 楼 laiseeme 2008-03-08  
这个也简单了些吧

相关推荐

    struts2 概述

    Struts2是一个基于Java EE平台的MVC(Model-View-Controller)框架,由Apache基金会维护,旨在简化Web应用程序的开发。MVC设计模式是一种软件设计模式,它将应用程序分为三个核心部分:模型(Model)、视图(View)...

    Struts2框架 jar JAVA开发 Struts2.jar架包 Struts2开发实例

    **Struts2概述** Struts2的核心设计目标是简化MVC应用的开发,通过提供一系列的插件和拦截器,使得开发者可以方便地处理请求、响应以及业务逻辑。它集成了许多其他开源框架,如FreeMarker和Velocity模板引擎、Tiles...

    Struts2——教程

    一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优秀特性,并融合了WebWork框架的优点。Struts2的目标是提供一个简单、高效且可扩展的框架,帮助开发者构建健壮的web应用程序。 二...

    Migrating From Struts1 To Struts2

    #### WebWork/Struts2概述 WebWork/Struts2是Struts1的后续版本,它在设计上做了重大改进,提供了更加强大且灵活的功能。主要特点如下: - **优点**:架构简单易懂,易于扩展;标签库支持Freemarker或Velocity等模板...

    Struts2权威指南

     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 ...

    [Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版) 1/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概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是Action类,它是业务逻辑和视图之间的桥梁。通过使用拦截器,Struts2能够...

    Struts2 chm文档

    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架构设计与实现原理

    #### 一、Struts2概述 Struts2是Struts框架的第二代版本,它是在Struts1的基础上进行了大量的改进和完善后诞生的。Struts2不仅继承了Struts1的核心思想,即MVC(Model-View-Controller)设计模式,还融合了WebWork...

    精通struts2

    #### Struts2概述与MVC架构 - **背景**:随着计算机技术的进步,特别是互联网技术的飞速发展,软件系统的复杂度日益增加,传统的软件开发方式已经难以满足现代软件工程的需求。在这样的背景下,面向服务架构(SOA)...

    struts2教程及API

    一、Struts2概述 Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并解决了其局限性,引入了更多现代Web应用开发的需求。Struts2的核心是Action类,它负责处理用户的请求,与业务逻辑交互,并通过Result...

    Struts2(一)

    #### Struts2 概述与来历 - **Struts2**是由Apache组织维护的一款开源MVC框架,主要应用于Java Web开发领域。其定位仅作为表现层(MVC)框架,专注于处理前端用户交互逻辑。 - **Struts1**是Struts2的前身,同样是...

    struts2综合笔记

    #### 一、Struts2 概述与历史背景 **Struts2** 是一款流行的 Java Web 开发框架,它遵循 MVC (Model-View-Controller) 设计模式,旨在简化 Web 应用程序的开发过程。Struts2 提供了一种统一的方法来构建 Web 应用...

    struts2使用手册

    #### 一、Struts2 概述 Struts2作为一款流行的Web应用框架,是基于MVC(Model-View-Controller)设计模式的增强版本,它继承了Struts1.x的一些特性,并在此基础上进行了大量的改进与优化。Struts2能够很好地解决...

    Struts2讲义(Word文档格式)

    1. **Struts2概述** Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并解决了其局限性,提供了更优秀的行动控制器、拦截器机制以及强大的插件支持。Struts2的核心设计目标是简化MVC应用的开发,使...

    Struts2技术内幕 深入解析Struts架构设计与实现原理

    #### Struts2概述 Struts2是Apache Software Foundation支持的一个开源项目,它是Struts1的下一代版本,继承了Struits1的优点,并在此基础上进行了大量的改进和优化,使之成为了一个更加成熟、稳定且功能强大的Web...

Global site tag (gtag.js) - Google Analytics