`
yinyongliang
  • 浏览: 172883 次
社区版块
存档分类
最新评论

JSF 和 Struts 之间各自的优缺点

阅读更多
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 中看到一些控制器方面的可用工具。

5
2
分享到:
评论

相关推荐

    JSF和Struts各自的优缺点

    JavaServer Faces (JSF) 和 Apache Struts 是两种流行的Java Web开发框架,它们都有各自的优点和缺点。在选择使用哪种框架时,开发者需要考虑项目的特定需求、团队的技术背景以及对框架未来发展的预期。 JSF,作为...

    Tapestry,JSF和Struts的比较

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

    基于Struts和JSF技术的中间件的研究与设计

    先简单的介绍jsf和struts....对如何改进,结合jsf和struts各自的优点,并对中间的可行性做出了详细的分析. 最后是对该中间件的详细构架设计和实现. 希望对学jsf和struts,or开发中间件的朋友有帮助.

    struts與jsf比較

    Struts和JSF是两种流行的Java Web框架,它们在处理MVC(模型-视图-控制器)架构方面都有各自的特点和优缺点。以下是对两者的主要比较: **相似点:** 1. **表示层处理**:两者都使用Taglib(标签库)在JSP页面中...

    seam jsf ejb 资源相关连部分

    Seam、JSF(JavaServer Faces)和EJB(Enterprise JavaBeans)都是Java企业级开发的重要组成部分,它们各自解决了不同的问题,并且可以很好地协同工作来构建复杂的企业级应用。 #### 二、JSF简介 JSF是一个基于组件...

    Java web framework 比較

    描述:本文将对Java Web开发中的主流框架进行比较,包括Struts、Spring MVC、WebWork、Tapestry和JSF,分析各自的优缺点,以帮助开发者选择最适合项目需求的框架。 ### Struts #### 优点: - **标准框架**:在业界...

    java 三大框架面试题

    Java 三大框架,包括Struts、Spring和Hibernate,是Java开发Web应用时常用的技术栈,它们各自承担着不同的职责,为开发者提供了强大的支持。以下是对这些框架的详细解释: 1. **Hibernate**: - **工作原理**:...

    Matt Raible对各种Java Web层比较

    在Matt Raible的分享中,他对比分析了几种流行的Java Web层框架,包括JSF、Spring MVC、Stripes、Struts2、Tapestry和Wicket。 #### 三、各框架优缺点分析 1. **JSF (JavaServer Faces)** - **优点**: - Java ...

    j2ee面试,笔试题目

    理解这两个框架的工作原理和优缺点。 11. **JSP EL与JSTL**: - EL简化了JSP页面的表达式,JSTL提供了多种标签库,使JSP更易读和维护。 12. **Web容器与应用服务器**: - Tomcat是常见的Web容器,支持Servlet和...

    j2ee面试宝典及面试总结题

    - JPA(Java Persistence API)标准与Hibernate的关系,以及各自的优缺点。 5. **JNDI和JTA** - JNDI(Java Naming and Directory Interface)的作用,如何查找和绑定资源。 - JTA(Java Transaction API)的...

    facelet.pdf

    不同的框架有着各自的实现方式,例如Struts、WebWork、Spring MVC等都是基于请求/响应模式的经典框架。而随着技术的发展,一些新的框架如Tapestry、Wicket和JSF采用了基于组件的设计思想,为Web应用开发带来了全新的...

    各公司的J2EE面试题 其实很基础

    9. **Web服务**:包括SOAP(Simple Object Access Protocol)和RESTful(Representational State Transfer)两种,理解它们的工作原理和优缺点,以及如何使用JAX-WS和JAX-RS进行开发,对面试很有帮助。 10. **容器...

    Spring In Action 2005

    讨论除了Spring MVC之外的其他视图层解决方案,如Tiles、FreeMarker、Velocity等,以及它们各自的优缺点和适用场景。 **第10章:与其他Web框架的协作** 介绍如何在Spring框架中整合其他流行的Web框架,如Struts、...

Global site tag (gtag.js) - Google Analytics