<%@ page contentType="text/html; charset=gb2312"%> 一篇关于JSF的入门文章
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
一篇关于JSF的入门文章
     发布者: 发布时间:2007-01-05
摘要:JavaServer Faces作为一种新兴的Web表现层框架,正在受到越来越多的关注。本文描述了JSF的几大优势,以及这些优势所带来的Web开发的重大变革,从而试图说明JSF将会在众多竞争者中脱颖而出,成为Web表现层框架的主流。

  1. 引子:我与JSF的第一次亲密接触

  2004年3月,当我着手开发我的第一个Web程序时,我选择了JSP。作为一个传统的桌面程序员,而且是老程序员,向Web程序员的转变是异常痛苦的。3个月的时间,程序总算完成了,但从此对JSP恨之入骨。凌乱的书写格式,数据和界面的混杂,尤其是嵌入到页面里的Scriptlet,让我搞不清自己是编程序的还是写网页的。

  因此,当接到第二版的开发任务时,我毫不犹豫地放弃了JSP,寻找一种替代技术。上网一搜,却发现框架多如牛毛,评论文章各执一词,莫衷一是,让我彻底迷失了。犹豫摇摆不定之际,sun的J2EE Tutorial文档中关于 JavaServer Faces技术的介绍吸引了我:UI、component、event、listener这些在桌面程序中熟悉的字眼,让我在 Web开发中找到了桌面程序员的一些感觉。

  象开发桌面程序那样开发web程序,这是我选择JSF的初衷。基于这样肤浅的认识,跌跌撞撞上路了,在工期和新技术的双重压力之下,超负荷的工作令人透不过气来,但每每从JSF中发掘出令人惊喜的新特性,又给我带来极大的满足感。第二版终于完成时,日历恰好翻过一个整月。JSF带来的效率提升是显著的。

  事实上,到现在为止,我对于JSF还只能说是初步了解,远未达到掌握,更谈不上精通,但这并不妨碍我视JSF为Web开发的首选框架。尤其是对于新手,如果还没有在Struts、Tiles、Spring、Tapestry 等框架中走得太远,那么,集中你有限的精力踏上JSF之路吧。

  2. JSF优势之一:UI组件(UI-component)

  UI组件(UI-component)一直是桌面程序的专利,web程序中,虽然HTML定义了基本的UI标签,但要使这些UI标签像UI组件那样工作,还需要很多代码片断来处理数据及其表现形式,而且有效地组织这些代码片断使其协调一致也是一件繁琐的工作。JSF的UI组件是真正意义上的UI组件,能极大地简化程序员的工作,例如,在页面上放置一个文本输入框,这个输入框立即具备了数据填充、界面更新、事件侦听、动作触发、有效性检查和类型转换的功能。更为重要的是,程序员只需根据业务逻辑编写核心业务代码,JSF会保证代码在合适的时候被执行,完全不用考虑代码与代码之间该如何来配合。

  3. JSF优势之二:事件驱动模式

  事件是面向对象方法的重要组成部分,对象之间通过事件进行沟通和交流,使得一个或多个对象能够对另一个对象的行为作出响应,共同合作去完成一项业务逻辑。通常,编写Web程序时,程序员要为对象之间的沟通设计机制,编写代码。虽然沟通的内容属于业务逻辑,但沟通的机制显然与业务没有太大关系,程序员因此为业务逻辑之外的功能浪费了时间。JSF改变了这种状况。JSF的事件和侦听模式与大家熟悉的Javabean的事件模式类似,有Java基础的程序员并不需要学习任何新的东西。JSF的UI组件可以产生事件,例如,当页面上一个文本输入框的内容被修改时,会发出一个“值改变事件”。另一个对象如果对 “值改变事件”感兴趣,只需注册为该对象的侦听者,并编写处理例程,即可命令JSF在事件发生时自动调用处理例程。JSF做了所有该做的事,留给程序员的只有业务逻辑代码的编写。

  4. JSF优势之三:用户界面到业务逻辑的直接映射

  举个例子,表单提交是Web编程最常见的任务,也是最复杂的任务之一。当用户在网页上点击“确定”按钮时,浏览器将生成一个HTTP请求,发往服务器端的某个Servlet,执行该 Servlet的service方法。在service方法中,HTTP请求需要经历解码、类型转换、有效性验证、状态保存、数据更新等环节,处理这些环节的所有细节,对程序员来说是沉重的负担。在JSF下,这些工作的很大一部分都由框架承担了,在程序员看来,这个过程是透明的,用户界面端的HTTP请求可以直接映射到后端的一个事件处理例程,JSF起到了承前启后的作用。

  5. JSF优势之四:程序员和网页设计人员的分工

  在JSP中,程序员和网页设计人员的工作有时候是互相交织、无法区分的。这是因为JSP页面中掺入了网页设计人员所不熟悉的一些JSP标签,甚至是晦涩的Java代码。要求网页设计人员理解这些标签和代码是不现实的,不符合分工合作的原则。在JSF中,框架为网页设计人员提供了一套标准的UI组件,在工具的支持下,可以通过拖放简单地添加到网页上,然后设置某些显示属性来满足视觉要求。网页设计人员不需要知道UI组件背后的复杂代码,那是程序员的事,而程序员也不需要再处理任何与视觉相关的细节,程序员所做的只是给UI组件绑定类的属性或方法。虽然程序员和网页设计人员需要修改同一份文件,但他们各司其职,各得其所,互不干扰。程序员和网页设计人员工作的明确划分,是JSF在易用性方面迈出的一大步。

  6. JSF优势之五:请求处理生命周期的多阶段划分

  虽然都是建立在Servlet基础之上,但JSF的生命周期要比JSP复杂得多。JSP的生命周期非常简单,页面被执行时,HTML标记立即被生成了,生命周期随即结束。而一个完整的JSF请求-处理生命周期被精心规划为6个阶段,典型的JSF请求需要经历所有阶段,某些特殊的请求也可以跳过一些阶段。阶段的细分,显然引入了更多的处理,但JSF框架会管理这一切,所以,程序员在获得更多控制能力的同时,工作量并没有增加。

   7. JSF优势之六:伴随工具而生存

  JSF带来了Web编程的巨大变革,变革的强烈程度超出了很多工具厂商的预料,以至于现在可供JSF使用的工具非常缺乏。缺乏工具支持的JSF只会令人敬而远之,因此,JSF在设计之初就为工具厂商预留了用武之地。在为数不多的JSF工具中,sun的Java Studio Creator是一个优秀的开发环境;Borland的Jbuilder在JSF1.1时曾经是非常好用的开发工具,可惜现在对JSF1.2的支持没有跟上;Eclipse下JSF 的插件很多,但真正支持所见即所得的JSF插件都是收费的,例如Bea的Workshop for JSF、Exadel的JSF Studio等等;此外,Oracle和IBM也有JSF的开发工具。随着工具的不断涌现,用JSF开发Web程序将会越来越方便和快速。

   8. JSF优势之七:全面的用户自定义支持

  前面提到,JSF将极大地简化Web程序的开发,作为一个相对复杂的框架,JSF是如何做到这点的呢?原来JSF为程序员提供了很多默认的组件和类,通常情况下,JSF的这些默认组件和类足以满足Web开发的需要了。但是,考虑到在某些应用场合,框架的默认行为也许不符合业务的要求,JSF特别允许程序员编写自己的组件和类,来满足客户的特殊需求。例如,程序员可以编写自己的UI组件,甚至可以创建自己的EL解释器,来支持非标准的EL表达语言。

  9. JSF优势之八:Web开发的官方标准之一

  JSF的1.0版本发布于2004年2月份,当时是作为一项独立的Web技术推出的。经过1.1版到现在最新的1.2版,短短的两年多时间,JSF终于在2006年年中成为Java EE 5的组成部分,上升为Web开发的官方标准之一。Java EE 5最重要的使命就是简化Java的开发,而JSF 无疑为这一使命立下了汗马功劳。在Web框架层出不穷甚至有些泛滥成灾的今天,Sun以JSF来树立标准,对Java的发展是有益的。Sun在Java领域的领袖地位不容动摇,对于Java程序员来说,始终追随业界领袖的步伐,也许是避免技术落伍的最好方法。

  10. 结束语:该你了,JSF!

  考察某项技术的流行程度,google的关键字搜索不失为一种简便易行的方法。为了便于说明,我们选择目前最热门的Struts与JSF进行比较。在 google中分别输入关键字“Struts”和“JSF”,看看google返回的网页数量。令我们感兴趣的不是网页的绝对数量,而是JSF网页数量与 Struts网页数量的比值。我们看到,对于英文网页,这个比值是0.6,日文网页是1.0,繁体中文网页是0.8,而简体中文网页只有0.4。表1列出了具体的数据和比值。

  英文网页数量(万) 日文网页数量(万) 繁体网页数量(万) 简体网页数量(万)

  JSF Struts JSF Struts JSF Struts JSF Struts

  719 1170 145 140 10 13 59 138

  JSF / Struts = 0.6JSF / Struts = 1.0JSF / Struts = 0.8JSF / Struts = 0.4

  虽然这样的比较方法不够严谨,但0.4的比例从一个侧面说明JSF在国内还没有流行起来,用“方兴未艾”四个字来描述JSF的这种状况,是再合适不过了。由于历史的原因,国内的软件技术一直亦步亦趋地跟着国外跑,这不是我们希望的,但我们不得不承认,因此,从国外的情况来推论,我们有理由相信,JSF 必将成为国内程序员追捧的对象。正如某位哲人说的那样,JSF是早晨八、九点钟的太阳,希望寄托在JSF身上。

  11. 后记:不同的声音

  客观地说,JSF并非完美,业界对JSF的评价也褒贬不一。例如,由于JSF过于复杂,其学习曲线明显长于其他框架如Struts等,这在一定程度上妨碍了JSF的推广;此外,JSF的推出略显仓促,1.0版在使用中发现很多bug,以至于sun匆忙发布的1.1版主要是为了修正这些bug;还有,在 JSF1.2版之前,JSP和JSF的融合有严重的缺陷,这主要是由于二者不同的生命周期造成的,不过,1.2版在这方面作出了改进,现在,JSP和 JSF可以在一个项目中相安无事了。

  JSF的不足之处还有很多,比如UI组件不够丰富、具体实现的可选择余地过窄、使用JSF开发的实际项目不多、sun的参考实现还存在诸多bug、短期内缺乏工具支持等等,尤其是在国内,JSF的中文文档和书籍相当缺乏。但是,不管怎样,这些都是 JSF成长道路上必须经历的磨难,我相信,Sun会努力的。
(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
在Red Hat Linux 9.0下安装JDK
JSP与Mysql数据库的连接
如何用Java开发"多画面浏览器" 有没有源程序?
基于Socket的Java网络编程集粹
java进度条
商业智能和决策分析
 
最近评论:
        
你曾悄悄的来过!
wow gold,wow gold,wow gold,ffxi gil max(2530)
        
冰封的往事!
wow power leveling,wow gold,wow power leveling,wow gold max(2741)
        
冰封的往事!
wow power leveling,wow gold,wow power leveling,wow gold max(2615)
        
冰封的往事!
wow power leveling,wow gold,WoW Gold,wow gold max(2551)
        
飞舞的传奇!
传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(8771)
        
飞舞的传奇!
传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(4087)
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号