`
Anatorian
  • 浏览: 62260 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSF vs MVC

阅读更多
Jboss seam使用的前端展示层技术是JSF,而且目前只支持JSF,不支持struts, struts2, spring mvc等很多其它的web框架。看来jboss seam的设计者是很看重 JSF的。用了几个月的seam之后,我对JSF的认识终于有一些切身的体会(以前虽看过一些资料,但是没有实际应用过)。我以前一直是用像spring mvc这样很传统的MVC框架的,从这些框架转到JSF上面确实让人很是不适应。 从表面上看来JSF也像是个MVC框架,有展示用的页面,有可以抽出来的处理逻辑单元,有负责调度的导航规则,就像是MVC里的view model 和controller一样。但是这两种解决方案实际上很不一样,最主要体现在他们的世界观和方法学上。在MVC的眼里,世界都是由model view controller 组成的,解决问题就是划分这三种组件,并组织好在这种组件间流动的数据,而在JSF的眼里,世界是由组件构成的,解决问题就是组织这些组件,并在组件上发 生事件时,适当地处理事件。如果说MVC是用面向数据流的方法来处理问题,那么JSF就是面向对象了。 JSF确实带来了很多好处,利用现有JSF框架,把别人做好的组件放到页面上就形成了一个想要的页面,比纯手写页面代码要方便得多。JSF内置的 validation和event机制也很好用。怪不得jboss seam选用JSF作为它的展现层技术。使用seam这几个月,还是对JSF这种东西有些不满。JSF的标准组件实在太少太弱了,由其是Table组件, 非常弱,如果不是seam对JSF做了些增强,这个Table其本上就没什么用。SEAM里选用了开源JSF实现库,带来不少组件,看起来都很酷,但是用 起来总觉得不爽,不成熟,爱出错。对于一个页面构成和功能相当复杂,比如像GMAIL那样的(当然这个例子比较夸张),用JSF来做的时候基本上就只有一 个选择,就是自定义组件,很可惜的是自定义组件差不是一件很容易而有趣的事。如果你是一个前端高手,喜欢手写出漂亮而高较的前端代码,对不起,JSF也不 适合你,它生成的那些html和javascript,会让你想要修改它时而发狂。其实我觉得JSF这种东东只能用来做做由一堆堆表单组成的企业应用后 台,做网站。为什么会这样呢?我觉得这都是jsf试图掩盖http基于数据流的本质而造成的。它不想让你看到http请求与回应,只想让你看到组件与事 件,而这样做是要付出代价的。相对的,MVC正好顺应了http的这种特性,在编写页面上你可以有更高的自由度。 如果只是做一个企业内部使用的网站,重业务,轻页面,jsf还是不错的选择,如果你想做一个吸引人的高效的网站,还是用MVC吧!
分享到:
评论
2 楼 zxg_javaeye 2012-02-29  
JSF也可以做的很轻,SEAM里面都是richface的东西,用起来学习成本高.
1 楼 yzhw 2011-05-18  
受教了,也正的用seam,感觉如果数据量一大就有点吃不消了;用了seamgen生成所有的代码,要做的就是改路径、中文啥的,简单的对一些生成的CRUD的方法做一些修改,但是观查XXXList.xhtml(显示列表页)的时候,控制台上打印出多条相同的SQL,请问有遇到过这样的情况吗?

相关推荐

    JSF包,jsf包,JSF包,jsf包

    JSF的核心概念包括组件、事件、渲染器和生命周期,这些元素共同构建了一个强大的MVC(模型-视图-控制器)架构。 **组件模型**:JSF中的组件是UI的构建块,可以是简单的HTML元素如按钮或输入框,也可以是复杂的...

    精通JSF中文教程精通JSF中文教程

    JSF遵循MVC设计模式,其中视图由Facelets文件表示,模型由Managed Beans实现,控制器则是JSF框架自身。这种结构使得代码组织清晰,易于维护。 **9. JSF扩展** JSF框架是可扩展的,允许添加自定义组件、渲染器、EL...

    基于JSF,SQL SERVER2005的学生管理系统

    在JSF和MVC结合的系统中,JSF组件与MVC模型紧密集成,使得开发者能够方便地将用户界面交互与后端业务逻辑关联起来。 **文件名称列表(jsfstudents)** "jsfstudents"可能表示项目中与JSF学生管理相关的文件或...

    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的一部分,拥有广泛的支持和市场需求。它的优点在于快速上手和丰富...

    core jsf 1.2 jsf 核心

    JSF遵循MVC(Model-View-Controller)设计模式,将业务逻辑、视图呈现和用户交互分离开来,使得开发者能够更专注于各自领域的代码编写。JSF的核心组件包括UI组件、事件处理、数据绑定和转换验证。 ### 2. UI组件库 ...

    JSF定义及原理

    与Struts等早期的MVC框架相比,JSF采用了更为先进的面向对象的事件通信机制,将Web应用的请求-响应模型隐藏在框架内部,使得开发过程更加贴近桌面应用的编程体验。在JSF中,UI组件可以直接绑定到服务器端的托管Bean...

    JSF入门+JSF web实战+JSF2

    JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种声明式的方式来构建用户界面,简化了开发过程,并且与Java EE平台无缝集成。本系列资料包括《JSF...

    jsf第一个例子 jsf架包 jsf实例

    它为开发人员提供了一种模型-视图-控制器(MVC)架构,简化了前端和后端之间的交互。JSF提供了组件库,使得创建动态、交互式的网页变得简单。 在“jsf第一个例子”中,我们通常会遇到以下关键概念: 1. **JSF生命...

    JSF的工作方式 JSF架构 JSF模型 JSF事件类型

    JSF架构基于MVC(Model-View-Controller)模式,由以下核心组件组成: - **模型(Model)**:业务逻辑,通常由JavaBeans(也称为管理Bean)实现,存储和处理应用程序数据。 - **视图(View)**:用户界面,由JSF...

    JSF中文教程jsf

    **JSF框架的优势** 包括丰富的组件库(如PrimeFaces、IceFaces等)、MVC架构模式、易于测试和调试,以及良好的可扩展性。然而,它也有一些挑战,比如性能问题和学习曲线较陡峭。 **中文教程** 对于非英语背景的学习...

    jsf框架入门视频资料

    JSF框架基于MVC(Model-View-Controller)设计模式,提供了一种声明式编程方式。开发者可以使用预定义的UI组件(如按钮、表单、文本框等)来创建视图,通过绑定这些组件到模型数据,实现用户界面和后端数据的交互。...

    JSF 学习资料大全

    JSF的组件、EL(Expression Language)和 Managed Beans 分别对应于MVC模式中的视图、表达式和模型。 **六、JSF库和扩展** JSF有许多第三方库来增强其功能,如PrimeFaces、RichFaces和IceFaces等。这些库提供了更多...

    用jsf做的登录注册的组件

    1. **JSF架构**:JSF采用MVC(Model-View-Controller)设计模式,它提供了组件化UI开发的能力。模型负责业务逻辑,视图负责展示,控制器负责处理用户请求并更新模型。 2. **JSF组件**:JSF的核心是UI组件库,如`h:...

    JSF核心编程第二版

    7. **JSF与MVC**:JSF遵循Model-View-Controller(MVC)设计模式,书中会解释如何在JSF应用中实现MVC结构,以及JSF如何与其他MVC框架如Spring集成。 8. **FacesContext**:作为JSF的核心,FacesContext对象是JSF...

    jsf总结的学习资料

    11. **JSF与MVC**:JSF遵循MVC(Model-View-Controller)设计模式,将视图、模型和控制器分离,使代码组织更加清晰,易于维护和扩展。 12. **性能优化**:虽然JSF被批评为相对较重,但通过合理的配置和使用最佳实践...

    JSF全套(JSF入门教+ LIB+ Ajax4JSF使用手册 )

    JavaScript Faces (JSF) 是Java平台上的一种用于构建用户界面的模型-视图-控制器(MVC)框架,它简化了Web应用程序的开发。本资源包包含了JSF从入门到进阶的多个方面,包括基础教程、核心组件库(LIB)、Ajax4JSF的使用...

    jsf-api.jar和jsf-impl.jar

    **JSF(JavaServer Faces)** 是...这两个库在Java Web开发中起着关键作用,特别是在构建MVC架构的应用程序时,它们提供了方便的组件和标签库,使开发者能够更加专注于业务逻辑,而不是底层的HTTP处理和页面渲染细节。

    拍卖系统jsf+ejb+jpa

    这样的整合方式提供了完整的MVC(Model-View-Controller)架构,使得拍卖系统具有良好的分层结构,便于维护和扩展。JSF处理用户界面,EJB处理业务逻辑,JPA负责数据持久化,三者协同工作,构建了一个高效、健壮的...

    jsf分页 jsf分页 jsf分页

    JSF是一个MVC(模型-视图-控制器)框架,其中UIComponent和ManagedBean是关键组成部分。分页通常涉及到两个主要部分:前端显示和后端处理。 1. **前端显示**: 在JSF中,我们通常使用`h:commandLink`或`p:...

    JSF实现的CRUD例子 myeclipse

    在没有数据库的情况下运行,数据可能会存储在内存中的简单数据结构(如ArrayList)中,这有助于简化示例,专注于JSF和MVC设计模式的理解。不过,在实际应用中,数据通常会持久化到数据库中。 总之,这个JSF CRUD...

Global site tag (gtag.js) - Google Analytics