`
Anatorian
  • 浏览: 61373 次
  • 性别: 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,请问有遇到过这样的情况吗?

相关推荐

Global site tag (gtag.js) - Google Analytics