隨筆 - 170  文章 - 536  trackbacks - 0
          <2006年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627281234
          567891011

          常用鏈接

          我參與的團(tuán)隊(duì)

          隨筆分類(103)

          搜索

          •  

          積分與排名

          • 積分 - 415129
          • 排名 - 135

          最新評論

          閱讀排行榜

              在后面的時(shí)間里,我會陸續(xù)的把我在 JSF 學(xué)習(xí)過程中的一些心得體會以及一些值得參考的代碼拿出來,整理成 JSF Cookbook 系列,并逐步發(fā)布出來。當(dāng)然在整理的過程中因?yàn)閭€(gè)人能力有限,難免會出現(xiàn)錯(cuò)誤和遺漏,請高手多多指點(diǎn),謝謝。只希望這些資料對大家學(xué)習(xí)JSF帶來一些便利。因?yàn)閭€(gè)人時(shí)間有限,速度可能會有些慢,請大家原諒,也希望有興趣的朋友也能投入到資料的編寫過程中來。
              該資料編寫工作在我的論壇 http://www.js66.com/java 中進(jìn)行,通常情況下我會在論壇中編寫一定的數(shù)量的資料后,集中在這里發(fā)布,可能會有些延期,所以如果大家希望看最新版的資料,請到我的論壇來,如果你有這方面的疑問也可以到這里來尋求解答。

          1.什么是 JavaServer Faces

          問題:
          你對JSF不了解,希望了解更多關(guān)于JSF的資料。

          解決:
              JavaServer Faces(JSF) 是一種標(biāo)準(zhǔn)的 J2EE 表示層的技術(shù),其主旨是為了使 Java 開發(fā)人員能夠快速的開發(fā)基于 Java 的 Web 應(yīng)用程序。它不同于其它 Java 表示層技術(shù)的最大優(yōu)勢是其采用的組件模型,事件驅(qū)動(dòng),并且和其它的 MVC 框架相比,它是一種 Java 標(biāo)準(zhǔn),在Java EE 5 中,JavaServer Faces 1.2 正式作為一個(gè)標(biāo)準(zhǔn),加入 Java Enterprise 的世界。

              作為一種高度組件化的技術(shù),開發(fā)人員可以在一些開發(fā)工具的支持下,實(shí)現(xiàn)拖拉式編輯操作,用戶只需要簡單的將 JSF 組件拖到頁面上,就可以很容易的進(jìn)行 Web 開發(fā)了。這是其作為一種組件化的技術(shù)所具有的最大好處,我們能用的組件不光是一些比較簡單的輸入框之類,還有更多復(fù)雜的組件可以使用的,比如 DataTable 這樣的表格組件, Tree 這樣的樹形組件等等。在 Ajax 盛行的今天,我們也可以通過 JSF 組件來簡化開發(fā)人員的開發(fā)難度,使得 Ajax 能通過拖拖拉拉的操作方便的進(jìn)入到我們的應(yīng)用中去。作為一種標(biāo)準(zhǔn)的技術(shù),JavaServer Faces 得到了相當(dāng)多工具提供商的支持。同時(shí)我們也會有很多很好的免費(fèi)開發(fā)工具可以使用,前不久 Sun Java Studio Creator 2 和 Oracle JDeveloper 10g 作為免費(fèi)的支持 JSF 的開發(fā)工具發(fā)布,給 JSF 帶來了不小的生氣。另外我們也有一些很優(yōu)秀的商業(yè)開發(fā)工具可共選擇,BEA Workshop (原 M7 NitroX),Exadel,MyEclipse 這樣的基于 Eclipse 的插件開發(fā)工具,為現(xiàn)在廣大的 Eclipse 用戶帶來了不小的便利,IBM 的 Rational Application Developer 和 Borland 的 JBuilder 也是很不錯(cuò)的支持 JSF 可視化開發(fā)的商業(yè)開發(fā)工具,在后面我會用一節(jié)的篇幅簡單的介紹一下這些工具。

              傳統(tǒng)的 Web 應(yīng)用程序與桌面應(yīng)用程序存在著許多本質(zhì)上的差別,使得用戶要手工的去捕獲各種瀏覽器請求,保存客戶端狀態(tài),并且手工控制著頁面的轉(zhuǎn)向,等等。JSF 的出現(xiàn),無疑給我們帶來了巨大的便利,JSF 提供了事件驅(qū)動(dòng)的頁面導(dǎo)航模型,該模型使應(yīng)用程序開發(fā)人員能夠設(shè)計(jì)應(yīng)用程序的頁面流。與 Struts 的方式向類似的是,所有的頁面流信息都定義在 JSF 配置 XML 文件 (faces-config.xml) 中,而非硬編碼在應(yīng)用程序中。這很大程度簡化了開發(fā)人員開發(fā)難度,簡化了應(yīng)用程序的開發(fā)。

              同時(shí)JavaServer Faces 也是一種遵循遵循模型-視圖-控制器 (MVC) 模式的框架。實(shí)現(xiàn)了視圖代碼(View)與應(yīng)用邏輯(Model)的完全分離,使得使用 JSF 技術(shù)的應(yīng)用程序能夠很好的實(shí)現(xiàn)頁面與代碼的分離。所有對 JSF 頁面的請求都會通過一個(gè)前端控制器 (FacesServlet) 處理,系統(tǒng)自動(dòng)處理用戶的請求,并將結(jié)果返回給用戶。這和傳統(tǒng)的 MVC 框架并沒有太大的區(qū)別。

              JavaServer Faces 是一種使用了 POJO 的技術(shù)同時(shí)在使用了類似 Spring 的控制反轉(zhuǎn)(IoC) (或稱為依賴注入-DI) 技術(shù),在 JSF 的 Backing Bean 中,我們可以把視圖所需要的數(shù)據(jù)和操作放進(jìn)一個(gè) Backing Bean 中。同時(shí)得益于 JSF 使用的 DI 技術(shù),我們可以在配置文件中初始化 Managed Bean,同時(shí)我們也可以通過這樣的技術(shù)很方便的和使用類似技術(shù)的 Spring 進(jìn)行整合。


          2.下載 JSF 的實(shí)現(xiàn)版本

          問題:
          你需要使用 JSF 來開發(fā)應(yīng)用程序。

          解決:
              因?yàn)?JSF 1.1 是一個(gè)標(biāo)準(zhǔn)(JSR-127),所以會有一些不同的廠商和組織提供了自己的實(shí)現(xiàn),目前比較流行的實(shí)現(xiàn)包括 Sun 的 Reference Implementation (參考實(shí)現(xiàn),簡稱為 RI) ,Apache 軟件基金會的 Myfaces, Oracle 的 ADF Faces (目前 Oracle 已經(jīng)將其捐贈(zèng)給 Apache 軟件基金會下的 Myfaces 項(xiàng)目,成為它的一個(gè)子項(xiàng)目)。
              分別提供了以上這些實(shí)現(xiàn)的下載地址,大家可以去下載 JSF 的實(shí)現(xiàn)版本,我們會在后面的介紹中用到這些包。

              Sun RI : http://java.sun.com/j2ee/javaserverfaces/
              Myfaces : http://myfaces.apache.org/
              ADF Faces : http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/index.html

          討論:
              因?yàn)?JSF 有了這么多種類的實(shí)現(xiàn)版本,大家或許會覺得有些疑惑,我該到底用哪個(gè)版本去開發(fā)呢?在我現(xiàn)在和以后的文章系列里面,我將會以 Apache Myfaces 1.1.1 的實(shí)現(xiàn)版本為例,來介紹 JSF 技術(shù)。

              Struts 社區(qū)為了擴(kuò)展 JSF,推出了 Shale 子項(xiàng)目,目的是為 JSF 提供大量的應(yīng)用支持,它以 JSF 的實(shí)現(xiàn)為基礎(chǔ),提供了一系列方便易用的特性,包括有:Web Flow,Ajax,Tiles 的集成,客戶端驗(yàn)證,并且提供了類似于 Tapestry 的視圖和參數(shù)化的 SubTree 模型。雖然 Shale 到目前為之還沒有一個(gè)正式發(fā)布的版本,但它在 2005 年 JavaOne 的 Web 框架評比中,在技術(shù)特性的評比中獲得了 4.95 的高分,超越 JSF, Tapestry, Webwork, Struts 而獨(dú)占鰲頭。但是相信我們除了 JSF 標(biāo)準(zhǔn)外,很快會有這樣一個(gè)更好的選擇了。

              記住,Shale 不是 JSF,而是對 JSF 的擴(kuò)展,也正如 Struts 的創(chuàng)始人 Craig McClanahan 所說的“Shale 與 JSF 的關(guān)系,就像 Struts 與 JSP 的關(guān)系一樣”。

          [Last Update 2006-01-17]

          posted on 2006-02-17 15:41 steady 閱讀(2944) 評論(8)  編輯  收藏

          FeedBack:
          # re: JSF Cookbook (1) 2006-02-17 19:12 一天一點(diǎn)愛戀
          謝謝,辛苦了!  回復(fù)  更多評論
            
          # re: JSF Cookbook (1) 2006-02-24 17:34 revever
          期待下一片文章  回復(fù)  更多評論
            
          # re: JSF Cookbook (1) 2006-03-06 10:45 JSF fans
          關(guān)注中!記得要堅(jiān)持更新哦,樓主!!  回復(fù)  更多評論
            
          # re: JSF Cookbook (1) 2006-03-09 16:39 悶炮
          樓主辛苦了!!!  回復(fù)  更多評論
            
          # re: JSF Cookbook (1) 2006-04-12 10:08 郭文濤
          厲害 期待中 學(xué)習(xí)中  回復(fù)  更多評論
            
          # re: JSF Cookbook (1) 2006-09-16 09:54 lantian
          JSF開發(fā)中控件是一方面,更主要的請求處理過程生命周期的各個(gè)階段作了哪些事情,建議大家熟讀規(guī)范以深刻理解JSF。  回復(fù)  更多評論
            
          # re: JSF Cookbook (1) 2006-09-16 14:05 壞男孩
          jsf是web程序發(fā)展的一大趨勢!關(guān)注  回復(fù)  更多評論
            
          # re: JSF Cookbook (1) 2006-10-20 13:52 zzz
          好的很好,我也是SUN公司的FANS.以后多發(fā)點(diǎn)這樣的文章
            回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 沅江市| 曲沃县| 黄梅县| 大丰市| 张掖市| 吉木乃县| 姜堰市| 南乐县| 台东县| 新蔡县| 鹤壁市| 额尔古纳市| 青河县| 钦州市| 博乐市| 大宁县| 政和县| 当阳市| 鄂托克前旗| 巩义市| 漯河市| 广河县| 兴安盟| 介休市| 南通市| 乌兰浩特市| 安远县| 兴山县| 宣城市| 五寨县| 大姚县| 奉节县| 牙克石市| 朝阳县| 靖远县| 靖安县| 延庆县| 泰兴市| 钟山县| 白山市| 长泰县|