`

阅读理解:比较JSF、Spring MVC、Stripes、Struts2、Tapestry、Wicket无聊

阅读更多

Matt通过采访这些框架的作者,与他们讨论各种开源的Java Web框架,并且突出各个框架的长处、听取框架作者对其他框架的看法,希望借此了解这些框架的未来发展方向。
  下列是一些被采访者:

  JSF:Jacob Hookom
  RIFE:Geert Bevin
  Seam:Gavin King
  Spring MVC:Rob Harrop
  Spring Web Flow:Rob Harrop and Keith Donald
  Stripes:Tim Fennell
  Struts 1:Don Brown
  Tapestry:Howard Lewis Ship
  Trails:Chris Nelson
  Struts 2:Patrick Lightbody
  Wicket:Eelco Hillenius

  Matt对采访做了如下总结:
  JSF:

  如果你想让web应用具有类似桌面程序的功能性,那么JSF的标准规范和大量第三方组件库的支持值得你 信赖。

  Spring MVC:

  综合了许多不同的技术,这使得它可以被广泛地应用到不同类型的项目中去;它可以被当作web应用开发的一个基础平台。

  Stripes:

  可以被应用到存在大量复杂数据交互的程序中;有强大的类型转换、绑定和验证功能;可以使管理大的复杂表单以及直接映射它们到域对象变得简单……

  Tapestry:

  在中到大型项目中,表现突出(当然,你也可以只把它应用到单个页面上),在这些项目中,你可以通过简单地创建新的组件起到杠杆作用。

  Struts 2:

  通常更适合于那些希望可以真正开始做事并且愿意花费大量时间来学习他们使用的开源工具的小项目组。Struts 2的目标不是那些更喜欢拖放式开发的“扶手椅程序员”。

  Wicket:

  非常适合于这样的内/外部网应用:UI很复杂并且你希望可以充分利用你的开发者资源。

  上面的总结,基本是突出了各个框架的长处。然而,哪些又是他们不好的地方呢?

  Matt提出了评价一个框架好坏与否的标准:

  ◆Ajax支持

  是不是内置了?是否便于使用?

  ◆书签能力

  用户能否将某个页面收藏起来并且可以方便地返回到该页面?

  验证

  使用是否简单?是否支持客户端(JavaScript)验证?

  ◆可测试性

  脱离容器测试控制器,是否足够简单?

  ◆提交和重定向

  框架如何处理重复提交问题?

  ◆国际化

  如何支持国际化?控制器利用国际化信息,是否容易?

  ◆页面修饰

  框架支持哪种类型的页面修饰/组成机制?

  ◆社区和技术支持

  提出问题,能否被快速地、恭敬地回答?

  ◆开发工具

  是否有支持这个框架的好的工具,尤其是IDE?

  ◆市场需求

  学习了这个框架,它能否帮你找到份工作?

  ◆岗位数量

  在dice.com和indeed.com上,对这个框架技能的需求如何?


  笔者认为这个评价标准,值得大家借鉴。

  然后,Matt按照这些评价标准,对各个框架做了以下阐述:

  Ajax支持

  ◆JSF:没有内置的Ajax支持,需要使用ICEfaces和Ajax4JSF
  ◆Stripes:没有对应的类库,支持流输出
  ◆Struts 2:内置Dojo,有用于GWT和JSON的插件
  ◆Spring MVC:没有对应的类库,需要使用DWR和Spring MVC扩展
  ◆Tapestry:Tapestry 4.1中,有内置的Dojo
  ◆Wicket:有Dojo和Script.aculo.us支持

  书签能力

  ◆JSF:可以任意提交——URL甚至不被考虑
  ◆Stripes:使用约定,但是你可以不加理会
  ◆Struts 2:有命名空间的概念,这使得收藏某个页面并返回变得容易
  ◆Spring MVC:允许完全的URL控制
  ◆Tapestry:依然存在一些丑陋的URL
  ◆Wicket:允许装配(mount)页面/URL

  验证

  ◆JSF:默认的国际化信息丑陋,但是配置简单
  ◆Stripes和Wicket:用Java类进行验证——不支持客户端验证
  ◆Struts 2:使用OGNL完成强大的表达式验证功能;只有在Action上指定了规则,才支持客户端验证。
  ◆Spring MVC:允许你使用公共验证器——这是一种成熟的解决方案
  ◆Tapestry:有健壮的验证功能——不需自定义就有漂亮的国际化信息

  可测试性

  ◆Spring MVC和Struts 2:允许利用mocks(例如EasyMock、jMock和Spring Mocks)简单地进行测试
  ◆Tapestry:测试困难,因为页面类被抽象、具体类被简化
  ◆JSF:页面类可以方便地被测试,实际上很像Struts 2 中的actions
  ◆Wicket:有WicketTester——一个强大的解决方案
  ◆Stripes:有Servlet API Mocks和MockRoundtrip

  提交和重定向

  解决重复提交问题的最简单方法是:在提交后重定向

  ◆Spring MVC:允许你将参数加到重定向URL上
  ◆Stripes、Tapestry和Wicket:有“flash式”的支持
  ◆Struts 2:需要一个自定义的解决方案
  ◆JSF:需要一个自定义的解决方案,国际化信息很难加入到页面bean中

  国际化

  ◆JSTL的标签使国际化变得简单;如何将国际化信息放到控制器类中,还没有一个统一的标准。
  ◆Stripes、Spring MVC和JSF:每个地区使用一个资源绑定文件
  ◆Struts 2、Tapestry和Wicket:提倡把每个页面/action用到的资源文件分开
  ◆JSF:需要在每个页面上定义资源绑定信息
  ◆Tapestry:标签比较可怕

  页面修饰

  ◆Tiles能够用于Struts 2、Spring MVC和JSF中;需要对每个页面进行配置。
  ◆SiteMesh能够用于所有的这些框架中(不推荐在JSF、Tapestry或者Wicket中使用);在设置完成后, 只需要很少的维护。

  开发工具

  ◆Spring MVC:Spring IDE,但是只做XML校验,不是一个UI/web工具
  ◆Struts 2:Eclipse
  ◆Tapestry:Spindle,对编码者非常有利
  ◆JSF:众多IDE支持,并且做得越来越好
  ◆Stripes和Wicket:没有任何官方工具
  ◆NetBeans目前支持Struts *、JSF(+Facelets)、Tapestry和Wicket,尚不支持Stripes和Spring MVC

  市场需求

  ◆Struts 1:需求依然很大并且被广泛使用
  ◆Spring MVC:越来越受关注,但大部分是因为Spring框架的一些其他特征
  ◆JSF:很快地变得流行起来
  ◆Struts 2:正在获得地盘,但是相关的工作机会很少
  ◆Tapestry:在过去的数年里,受欢迎程度不断增加
  ◆Wicket和Stripes:还是未知数

分享到:
评论

相关推荐

    Java Web层框架之比较—比较JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket.doc

    本文将深入对比六种流行的Java Web层框架:JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket。 **JavaServer Faces (JSF)** JSF作为Java EE的一部分,拥有广泛的支持和市场需求。它的优点在于快速上手和丰富...

    Comparing Web Frameworks; Struts, Spring MVC, WebWork, Tapestry & JSF.pdf

    此软件介绍webwork and struts and jsf的区别

    jsf2+spring sample

    【JSF2与Spring整合详解】 JavaServer Faces 2(简称JSF2)是Java平台上的一个企业级的用户界面框架,它为构建基于Web的应用程序提供了组件化、事件驱动的模型。而Spring框架则是Java后端开发的核心框架,以其依赖...

    Struts+Spring+Hibernate+Jsf

    Struts、Spring、Hibernate 和 JavaServer Faces (Jsf) 是Java Web开发中四个非常重要的框架。这四个框架的集成使用可以构建出高效、模块化且易于维护的企业级应用。 Struts 是一个开源的MVC(Model-View-...

    jsf+spring 实例

    通过这个实例,开发者可以学习如何在JBoss上搭建一个整合了JSF和Spring的Web应用,理解两者是如何协同工作的,以及如何处理前端交互和后端服务的通信。这将有助于提升Java Web开发的能力和实践经验。

    Tapestry,JSF和Struts的比较

    Tapestry、JSF(JavaServer Faces)和Struts都是广泛使用的MVC(Model-View-Controller)框架,它们各自具有独特的特性和优势。下面我们将深入探讨这三个框架的核心概念、优缺点以及适用场景。 首先,Tapestry是由...

    J2EE教程: Struts+Spring+JSF+Hibermate+EJB+XML+WebService+Ajax(part2)

    **J2EE教程详解:整合Struts、Spring、JSF、Hibernate、EJB、XML、Web Service与Ajax** 在Java企业级开发中,J2EE(Java 2 Platform, Enterprise Edition)是一个重要的标准,它提供了丰富的框架和技术来构建分布式...

    jsf+spring整合

    整合JSF和Spring可以带来高效的开发体验和健壮的应用架构,但同时也需要开发者对两个框架都有深入的理解,才能充分发挥其潜力。在实际项目中,应根据具体需求选择合适的技术栈,并遵循最佳实践,以保证项目的稳定性...

    spring3.0MVC中文教材

    - **高度可配置性**: Spring MVC的设计非常灵活,可以轻松地与其他流行Web框架(如Struts、WebWork、JSF和Tapestry)集成,使得开发者可以根据项目的具体需求选择最适合的技术栈。 - **与其他框架的无缝集成**: ...

    JSF与Spring完美结合

    2. **配置JSF**:为了使JSF能够与Spring协作,需要在JSF的配置文件(如`faces-config.xml`)中添加Spring的JSF监听器`org.springframework.web.jsf.FacesContextListener`,这样JSF就能识别到Spring的Bean。...

    Spring集成Struts、JSF、WebWork2

    而Struts、JSF(JavaServer Faces)和WebWork2则是其他流行的MVC(Model-View-Controller)框架,它们各自有独特的特性和优势。这篇博客"Spring集成Struts、JSF、WebWork2"探讨了如何将这些框架与Spring进行整合,以...

    J2EE教程: Struts+Spring+JSF+Hibermate+EJB+XML+WebService+Ajax(par4)

    本教程聚焦于J2EE的核心技术和框架,包括Struts、Spring、JSF、Hibernate、EJB、XML、WebService以及Ajax,旨在帮助开发者理解和掌握这些技术,从而能够构建高效、可扩展的应用系统。 **1. Struts框架** Struts是...

    jsf-spring-4.0.3

    1. **Spring MVC与JSF**:Spring MVC可以作为JSF的后端控制器,处理业务逻辑并返回数据。 2. **依赖注入**:通过Spring的依赖注入,JSF的Managed Beans可以直接引用由Spring管理的Bean,增强代码的可测试性和解耦性...

    [Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版) 1/12

    第10章 Struts 2的标签库,第11章 Struts 2的Ajax支持,第12章 使用FreeMarker充当表现层,第13章 整合Spring,第14章 整合JSF,第15章 整合SiteMesh,第16章 整合JasperReports,第17章 整合JFreeChart,第18章 ...

    jSF2.0与Spring整合实例+教程

    **JavaServer Faces 2.0 (JSF 2.0) 和 Spring 框架的整合教程** 在当今的企业级Web开发中,JSF 2.0 和 Spring 的结合使用非常常见,因为它们各自提供了独特的优势。JSF 是一个用于构建用户界面的组件模型框架,而 ...

    jsf-spring-boot-starter-2.2.6.zip

    【标题】"jsf-spring-boot-starter-2.2.6.zip" 是一个基于Java Server Faces (JSF) 和Spring Boot的启动器项目,版本为2.2.6。这个压缩包通常包含了用于快速搭建JSF应用在Spring Boot环境中的必要组件和配置。 ...

    java javaee struts2 spring hibernate免费学习视频教程

    根据提供的标题、描述、标签及部分内容,我们可以总结出以下与Java、Java EE、Struts2、Spring、Hibernate相关的学习知识点: ### Java基础 - **Java语言特性**:介绍Java的基本语法,包括变量、数据类型、流程...

    J2EE教程: Struts+Spring+JSF+Hibermate+EJB+XML+WebService+Ajax(part3)

    **J2EE教程详解:构建Struts+Spring+JSF+Hibernate+EJB+XML+WebService+Ajax集成应用** 本教程是关于J2EE开发的一份综合指南,它涵盖了多个核心技术和框架,旨在帮助开发者构建高效、可扩展的企业级应用程序。在这...

Global site tag (gtag.js) - Google Analytics