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

Struts2简介

阅读更多

一.Struts技术的发展概况

经过六年多的发展,Struts1已经成为了一个高度成熟的框架,不管是稳定性还是可靠性都得到了广泛的证明。市场占有率超过20%,拥有丰富的开发人群,几乎已经成为了事实上的工业标准。但是随着时间的流逝,技术的进步,Struts1的局限性也越来越多地暴露出来,并且制约了Struts1的继续发展。

对于Struts1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严重的问题。首先,Struts1支持的表现层技术单一。由于Struts1出现的年代比较早,那个时候没有FreeMarkerVelocity等技术,因此它不可能与这些视图层的模版技术进行整合。其次,Struts1Servlet API的严重耦合,使应用难于测试。最后,Struts1代码严重依赖于Struts1 API,属于侵入性框架。

从目前的技术层面上看,出现了许多与Struts1竞争的视图层框架,比如JSFTapestrySpring MVC等。这些框架由于出现的年代比较近,应用了最新的设计理念,同时也从Struts1种吸取了经验,克服了很多不足。这些框架的出现也促进了Struts的发展。目前,Struts已经分化成了两个框架:第一个是在传统的Struts1的基础上,融合了另外的一个优秀的Web框架WebWorkStruts2Struts2虽然是在Struts1的基础上发展起来的,但是实质上是以WebWork为核心的。Struts2为传统的Struts1注入了WebWork的先进的设计理念,统一了Struts1WebWork两个框架。Struts1分化出来的另外一个框架是Shale。这个框架远远超出了Struts1原有的设计思想,与原有的Struts1关联很少,使用了全新的设计思想。Shale更像一个新的框架而不是Struts1的升级。 本文下面的内容将主要讨论Struts2

二.Struts2体系结构

Struts2的体系与Struts1体系的差别非常大,因为Struts2使用了WebWork的设计核心,而不是Struts1的设计核心。Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与Servlet API分离。图一是Struts2的体系结构简图。


Struts2框架的大概处理流程如下:

  1. <!---->浏览器发送一个请求。
  2. <!---->核心控制器FilterDispatcher根据请求决定调用合适的Action
  3. <!---->WebWork的拦截器链自动对请求应用通用功能,如验证等。
  4. <!---->回调Actionexecute方法,该execute方法根据请求的参数来执行一定的操作。
  5. <!---->Actionexecute方法处理结果信息将被输出到浏览器中,支持多种形式的视图。

三.Struts2Struts1的对比

通过上面对Struts2体系结构的了解,我们发现Struts2Struts1进行了巨大的改进。主要表现在如下几个方面:

  1. <!----><!---->Action的实现方面:Struts1要求必须统一扩展自Action类,而Struts2中可以是一个普通的POJO
  2. 线程模型方面:Struts1Action工作在单例模式,一个Action的实例处理所有的请求。Struts2Action是一个请求对应一个实例。没有线程安全方面的问题。
  3. <!---->Servlet依赖方面:Struts1Action依赖于Servlet API,比如Actionexecute方法的参数就包括requestresponse对象。这使程序难于测试。Struts2中的Action不再依赖于Servlet API,有利于测试,并且实现TDD
  4. <!---->封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。
  5. 表达式语言方面:Struts1中整合了EL,但是EL对集合和索引的支持不强,Struts2整合了OGNLObject Graph Notation Language)。
  6. 绑定值到视图技术:Struts1使用标准的JSPStruts使用“ValueStack”技术。
  7. <!---->类型转换:Struts1中的ActionForm基本使用String类型的属性。Struts2中使用OGNL进行转换,可以更方便的使用。
  8. <!---->数据校验:Struts1中支持覆盖validate方法或者使用Validator框架。Struts2支持重写validate方法或者使用XWork的验证框架。
  9. Action执行控制的对比:Struts1支持每一个模块对应一个请求处理,但是模块中的所有Action必须共享相同的声明周期。Struts2支持通过拦截器堆栈为每一个Action创建不同的声明周期。

四.WebWorkStruts2的对比

从某种程度上看,Struts2是从WebWork2上升级得到的。甚至Apache的官方文档也讲:WebWork2Struts2是平滑的过渡。我们甚至也可以说Struts2就是WebWork2.3而已。在很多方面Struts仅仅是改变了WebWork下的名称。

分享到:
评论
2 楼 bug-x 2012-08-11  
Struts2是建立在xwork之上的不是WebWork,Struts2和WebWork是兄弟关系。楼主看一下Struts2源码就知道了。
1 楼 xiaoLee 2010-05-10  
讲的很透彻很明白。

相关推荐

    Struts2 简介

    Struts2是一个强大的Java Web应用框架,它是基于Model-View-Controller(MVC)设计模式的,用于构建可扩展的企业级应用。Struts2的出现是由于WebWork和Struts社区的合并,它继承了两者的优势,提供了更高效、灵活的...

    struts2简介

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域具有广泛的应用。Struts2是Struts1的升级版,它弥补了Struts1的一些不足,提供了更强大的功能和更好的性能。本篇...

    Struts2简介与入门

    Struts2是一个基于MVC(Model-View-Controller,模型-视图-控制器)设计模式的Web应用框架,它是开源的并且免费提供。MVC设计模式将应用分为三个核心组件:模型(Model)、视图(View)和控制器(Controller),这种...

    struts2 ,struts2 demo

    Struts2简介** Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并吸取了其他优秀框架如WebWork的优势。Struts2的核心是Action,它负责处理用户请求,并通过Interceptor(拦截器)机制来增强...

    struts2 学习重点笔记

    **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 WebWork 2,它融合了 Struts 1 的一些优秀思想。 - **优势**:使用 ...

    struts2简介及其优化

    Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、模块化和易于管理的Web应用。它基于Model-View-Controller (MVC)设计模式,为开发者提供了丰富的特性和插件支持,大大简化了Java web开发流程。相...

    struts2入门 struts2简介-第一个程序

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛使用,特别是在企业级应用中。Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并解决了其存在...

    struts2讲义

    ##### 1.1 Struts2简介 Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,用于简化Java Web应用程序的开发过程。与传统的Java Web开发相比,Struts2提供了更为简洁和高效的开发方式。 ##### ...

    2.1Struts2简介.docx

    Struts2是一个基于MVC(Model-View-Controller)设计模式的开源JavaEE框架,它致力于简化企业级Web应用程序的开发。MVC模式是一种将业务逻辑、数据和用户界面分离的设计理念,使得开发者能够独立地处理各个部分,...

    struts 2 简介

    Struts2是一个强大的Java Web应用程序框架,它是Apache软件基金会下的Jakarta项目的一部分。Struts2是Struts1的升级版,旨在提供更高效、更灵活的MVC(Model-View-Controller)架构,以帮助开发者构建和维护结构清晰...

    struts 2完全学习手册

    #### Struts 2简介 Struts 2是Struts框架的一个重要分支,它继承了Struts 1.x的一些特性,并在此基础上进行了大幅度的改进与扩展,使之成为了一个更为强大、灵活的Web开发框架。Struts 2主要应用于Java EE平台上的...

    Jquery与struts2

    ### Struts2简介 Struts2是Apache软件基金会下的一个开源项目,它是基于MVC设计模式的Java Web应用框架。Struts2提供了一套完善的拦截器(Interceptor)机制,支持多种模板技术,以及强大的插件架构,使得开发者...

    struts2下载地址

    #### 一、Struts2简介 Struts2是一个开源的Web应用框架,它继承了Struts1的设计理念,并在此基础上进行了大量的改进和完善。Struts2是Apache软件基金会下的一个顶级项目,它采用MVC(Model-View-Controller)设计...

    精通struts2

    - **Struts2简介**:Struts2是Apache Software Foundation的一个开源项目,它是Struts1.x的后续版本,采用了更为先进的设计理念和技术。Struts2不仅继承了Struts1.x的优点,还对其进行了大幅改进,特别是在性能、...

    我的struts2的总结

    ### Struts2简介 Struts2是Struts1的升级版本,它是一款用于Java EE环境下的MVC框架。相比于Struts1,Struts2提供了更强大的功能,包括但不限于拦截器、类型转换、文件上传/下载等。Struts2的核心思想是基于拦截器...

    struts2-2.2.3-all.zip

    ### Struts2简介 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的设计思想,并在此基础上进行了大量的改进和完善。Struts2采用了MVC(Model-View-Controller)架构模式,它将业务逻辑处理、用户...

Global site tag (gtag.js) - Google Analytics