`
chenshuang1227
  • 浏览: 26701 次
  • 性别: 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 概述,struts2 概述,struts2 概述,struts2 概述,struts2 概述,struts2 概述,struts2 概述

    Struts2 框架概述

    虽然Struts 2号称是一个全新的框架,但这仅仅是相对Struts 1而言。 Struts 2与Struts 1相比,确实有很多革命性的改进,但它并...Struts2概述 http://www.ossez.com/forum.php?mod=viewthread&tid=13556&fromuid=426

    Struts2全解Struts2全解

    1、struts2概述 Struts2 软件下载 Struts2 比较重要的类 操作步骤及框架配置 struts运行机制 2、简单的struts2程序 3、struts2配置文件 4、cion主要内容 Namespace、自定义Action、路径问题、通配符、包含模块...

    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 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框架 jar JAVA开发 Struts2.jar架包 Struts2开发实例

    Struts2 概述 如何应用Struts2 Struts2 配置文件 如何编写Action 拦截器 Struts2的标签 OGNL 数据校验 国际化

    Struts2.0中文教程权威版

    Struts 2权威指南——第1章 Struts 2概述.doc Struts 2权威指南——第2章 Struts 2下的HelloWorld.doc Struts 2权威指南——第3章 Struts 2基础.doc 01 为Struts 2.0做好准备 02 常用的Struts 2.0的标志(Tag) 03 ...

    Struts 2的高级应用

    1、MVC 概述 2、Struts1.x简述 3、Struts2概述 4、编写一个struts2应用程序 5、Struts2的核心配置文件 6、Action的实现 7、拦截器

    Struts2 入门概述(附图)

    java struts2 Struts2 入门概述(附图)

    Struts2相关的书籍集合

    文档包括以下内容(全部来源自网络): -- Struts2概述; -- Freemarker概述; -- Webwork源码分析; -- Struts2与Spring集成; -- Struts2 Ajax应用。

    struts2帮助文档

    struts2的概述struts2下的HelloWord struts2基础 struts2做好准备 struts2的标志 struts2的Action讲解 struts2中的国际化 struts2转化器 struts2实现表单数据校验 struts2的基石-拦截器 struts2中实现IOC struts2中...

    struts2权威指南.

    struts 2权威指南-基于webwork核心的MVC开发 第一章、struts2概述 第二章、struts2下的HolleWorld 第三章、struts2的基础

    Struts2基础资料

    Struts2概述,基本框架,应用视图组件、标签库、模型组件等。

    struts2 权威指南 基于webWork核心的MVC开发 part2

    struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解

    济南大学 第03章_Struts2应用_课堂.ppt

    3.1 Struts 2概述 3.2 Struts 2基本应用及工作流程 3.3 Struts 2标签库应用 3.4 Struts 2拦截器 3.5 Struts 2国际化应用 3.6 Struts 2文件上传 3.7 Struts 2综合应用实例——添加学生信息

    完整版韩顺平.2011版.SSH框架视频教程.校内网.课堂源代码xiaoneinew

    ### 2.1 Struts2概述 Struts2是一个优秀的MVC框架,它基于为Web开发提供了广泛支持的Jakarta Struts框架,并且进行了大量的改进,提供了更加强大、灵活的功能。Struts2框架具有良好的扩展性和可维护性,可以帮助...

    struts2 权威指南 基于webWork核心的MVC开发 part1

    struts2概述 strust2下的HelloWorld struts2基础 深入struts2 struts2类型转换 文件的上传和下载 ... 这本书太大了,我把它分为了12部分上传,给大家造成的不便,还请谅解

Global site tag (gtag.js) - Google Analytics