比较一下 JSF 和 Struts 之间各自的优缺点

原创 2004年08月30日 01:18:00

MORE >>> http://www-900.ibm.com/developerworks/cn/wsdd/library/techarticles/0407_barcia/0407_barcia.shtml

JavaServer Faces 曾经是 J2EE Web 开发中最被看好的技术之一。在 WebSphere Studio 中,JavaServer Faces 已经可以使用了。JavaServer Faces (JSF) 提供了可视化开发 J2EE Web 应用程序新的途径。

问: 这是一个很基本的问题。您能比较一下 JSF 和 Struts 之间各自的优缺点吗。如何了解现在和将来的技术趋势,JSF 如何以及是否将会发展成为相对于 Struts 更出色的技术。另外,WSAD 如果可以使两者不同的话,将在两者的比较中将会充当什么样的角色。

答: 这是近期很热门的一个问题。一般来说,JSF 仍然是相当新的技术,需要时间来完全地成熟。然而,我看到 JSF 已经可以完成 Struts 可以做的任何事,而且做的更多。Struts 并不是来自于强制性的需求。它是开发人员厌烦了一次次的编写相同的逻辑而创造的。JSF 的出现,既是必然的需要也是竞争的结果。

Struts 有以下优点:

  • Struts 是一个成熟的、被证实了的框架。它已经使用了几年,且被成功部署到许多项目中。WebSphere Application Server 管理控制台就是一个 Struts 应用程序。
  • Struts 使用 Front Controller 和 Command 模式,可以处理复杂的控制器逻辑。
  • 除了核心的控制器功能以外,它还有很多其他的优点,比如使用 Tiles 布局、说明性(declarative)异常处理以及国际化。

以下是其缺点:

  • Struts 是非常以 JSP 为中心的,必须使用其他框架来适应其他视图技术。
  • 尽管 Struts 有丰富的标记库,但是它只能帮助进行控制器方面的开发,当您处理关于页面的组件时,它没有任何意义。因此,从视图的角度来看,它没有提供好的工具。
  • Struts 需要关于 Java™ 的知识。其目的是帮助 Java 开发人员,而不是隐藏 Java。它在对 Web 开发人员隐藏 Java 语言的细节这一方面做的并不好。
  • ActionForms 被程式化的与 Struts 框架链接。因此,为了降低模型的耦合度,您需要编写传送代码或者在输入时使用工具将数据从 Action Forms 移动到 Model。

JSF 从包括 Struts 的少数框架发展而来。Struts 的创建者,Craig McClanahan,即是 JSF 规范的领导人之一。因此,能看到 Struts 和 JSF 之间的一些相似之处,这并不是偶然的。JSF 的主要目的之一就是使得 J2EE Web 应用程序在 RAD 工具下易于开发。同样地,它也引入了丰富的组件模型。JSF 有如下优点:

  • JSF 是一个来自 Sun® 的规范,将会被包括在 J2EE 规范的未来版本之中。各主要供应商都保证对 JSF 提供强力支持。
  • JSF 使用 Page Controller Pattern,因此会对页面密集型应用程序有帮助。相应组件会对来自页面上组件的事件作出响应。
  • JSF 有一个明确定义的请求生命周期,保证了在不同级别上的可插入性(plugability)。
  • 可插入性的一个有力的例子是构建您自己的 render 工具包。将框架中的呈现(rendering)部分和控制器部分分离的能力实现了良好的可扩展性。组件供应商可以编写他们自己的工具包以处理不同的标记语言,如 XML 或 WML。另外,render 工具包也不依赖于 JSP。
  • 因为 JSF 有一个丰富的组件模型,所以它支持 RAD 类型的开发。现在我可以使用拖放技术来构建我的 Web 页面。此外,JSF 提供在不打破层次布局的条件下,将可视组件同后台模型组件连接起来的途径。

JSF 有以下缺点:

  • JSF 仍是相当新的并处于发展过程中。要看到成功的部署和广泛的应用还需要一段时间。另外,组件供应商可能并不能做您想让他们完成的所有事情。
  • 手工方式的 JSF 并不比 Struts 简单。它的目标更倾向于 RAD。那些喜欢手工开发的人(例如,那些不喜欢 IDE 的 vi 类型的人)可能会发现 Struts 更容易开发。
  • Struts 导航可能会更加灵活一些,但同时也导致控制器逻辑更加复杂。

JSF 和 Struts 将会继续共存一段时间。Struts 社区已经了解了 JSF 并在作出一些改变以对 JSF 提供强大的支持。参见 What about JSTL and JavaServer faces?

在工具的角度,如果您留意了 WebSphere Studio 对 JSF 和 Struts 的工具支持,将会发现 Struts 工具集中于控制器方面。Web Diagram 编辑器帮助构建您的 Struts 配置,而向导/编辑器构建 Struts 构件。JSF 工具适合于构建页面,而实质上向您隐藏了 JSF 框架。可以预计 WebSphere Studio 将暂时同时支持两种框架。当 JSF 趋于成熟以后,预计将可以在 JSF 中看到一些控制器方面的可用工具。

JSF和Struts各自的优缺点

  • 2009年08月19日 18:02
  • 18KB
  • 下载

JSF相对于Struts的一些优点(中英文版)

Top Ten Reasons to Prefer JSF over StrutsIve got a client whos trying to decide whether to use Strut...
  • kepeizong
  • kepeizong
  • 2006年05月09日 13:21
  • 2197

JSF与Struts的异同

JSF与Struts的异同板桥里人 http://www.jdon.com 2005/09/05 ...
  • wqhzxy87812389
  • wqhzxy87812389
  • 2007年05月07日 10:27
  • 358

JSF是什么。作用是啥

jsf是一种web框架,其实我也没有用过,这是我很久之前在网上看到的一种框架,当时大致简单的了解一下 jsf常用来和struts对比,struts是一种mvc框架,jsf是一种事件驱动的框架。 ...
  • qq_29347295
  • qq_29347295
  • 2016年11月04日 09:47
  • 2050

SpringMVC和Struts2的比较的优点

我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置。spring3 mvc可以认为已经100%零配置了(除了配置spring mvc-servlet.xml外)。 Sprin...
  • dreamsunday
  • dreamsunday
  • 2015年06月16日 11:02
  • 5387

Spring、Spring MVC、Struts2、、优缺点整理

Spring MVC和Struts2的比较的优点 我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置。spring3 mvc可以认为已经100%零配置了(除了配置sprin...
  • inaoen
  • inaoen
  • 2015年02月13日 15:04
  • 47039

Hibernate和IBatis对比(优缺点)

项目也做过几个, 使用IBatis就做一个项目, 基本上都是使用Hibernate, 也只是知道几点关于这两个框架的区别, 今天闲着没事干, 从网上找了几篇文章, 做了一个简单的整理。网上关于这两个框...
  • wugouzi
  • wugouzi
  • 2013年06月17日 17:44
  • 7404

JSF和Struts各自的优缺点

  • 2009年08月19日 18:02
  • 18KB
  • 下载

比较开源Java Web框架JSF、Spring MVC、Stripes、Struts2、Tapestry、Wicket

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

对于集合的遍历操作,可以使用 itrator foreach for 循环,下面比较一下各自的优缺点

List list = new ArrayList(); list.add("11"); list.add("11"); list.add("33");...
  • learningcsdn
  • learningcsdn
  • 2016年06月28日 16:00
  • 795
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:比较一下 JSF 和 Struts 之间各自的优缺点
举报原因:
原因补充:

(最多只允许输入30个字)