<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鐵手劍譜

    上善若水
    數據加載中……
    JavaServer Faces簡介

    對于RAD 工具的四個層次, JavaServer Faces 定義了其中3個:一個組件架構,一個標準的UI 部件集,以及一個應用架構。JSF的組件架構定義了通用的方式來建立UI 部件。此架構能驅動標準的JSF UI 組件(按鈕,超鏈接,復選框,文本框等等),也為第3方組件留了空間。組件是面向事件的,所以JSF 允許你處理客戶產生的事件 (如,文本框中值的變化或者點擊了按鈕)。

    clip_image002.jpg

    因為對Web應用來說,不象其桌面應用堂兄弟,它必須總是要滿足多個客戶 (比如桌面瀏覽器,移動電話和PDA等), JSF 有一個強大的架構來以不同的方式顯示組件。它也有一個可擴展的機制來進行輸入校驗 (如字段長度) 以及在顯示字符串和對象之間進行轉換。

    Faces 也能夠自動的保持你的UI 組件和收集用戶輸入值的Java 對象之間的同步,并且通過調用后臺Bean來對事件進行響應。另外,它有一個強大的導航系統并且全面支持多語言特征。這些特征構成了JSF的應用基礎架構—即對新應用系統必不可少的基本構建塊。

    JavaServer Faces 定義了工具支持的基礎,但是其實現留給了工具廠商,這是Java的習慣。你可以自行選擇業界領導提供的工具,它們都可以是你能夠像使用其他RAD 開發工具如Visual Stu­dio. NET一般可視化的布局和設計你的Web UI。 (如圖1.1, 1.2, 和 1.3 分別展示了在IBM, Oracle, 和 Sun的IDE開發工具中開發JSF是什么樣子) 。或者,如果你愿意在沒有設計工具下開發Faces 應用。

    clip_image004.jpg

    在這些贊美之詞之后,我們應該指出JavaServer Faces 和桌面UI 框架如Swing 或者SWT之間的關鍵不同之處: JSF 是運行在服務器之上。因此, Faces 應用將運行在一個標準的Java web 容器之中,如Apache Tomcat [ASF, Tomcat],Oracle Application Server [Oracle, AS],或者IBM WebSphere Application Server [IBM, WAS],然后向客戶顯示HTML 或者其他標記語言。

     

    clip_image006.jpg

    如果你點擊一個Swing 應用中的按鈕,它將產生一個事件,而你可以直接在駐留在桌面中的代碼來處理該事件。相反, web 瀏覽器并不知道JSF組件和其事件的任何東西;它僅僅知道顯示HTML而已。所以當你點擊一個Faces 應用按鈕,它將產生一個請求,有瀏覽器發送到服務器。Faces 負責將該請求轉換成一個可以被服務器中的應用邏輯所處理的事件。它也負責保證你在服務器所定義的每一個UI 部件都正確顯示給瀏覽器。

    clip_image008.jpg

    圖1.4 顯示了一個Faces 應用的高階視圖。你可以看到,應用運行在服務器上可以和其他子系統集成,如EJB服務或者數據庫服務。當然, JSF還提供許多其他服務可以幫助你你更小的代價構建強大的Web應用。

    JavaServer Faces 有一個特定的目標:使web 開發更快更容易。它允許開發人員以組件,事件,后臺Bean以及它們之間的交互來進行思考,而不是請求,響應和標記。換句話說,它掩蓋了Web開發的大量的復雜性,是開發人員能夠集中于如何使他們的應用做的最好。

     

    工業支持

    對JCP社區和Sun 擴展Java的方式來說,最好的事情莫過于有大量的公司,組織和個人投身其中。通過JCP 產生一種規范實際上算不上快速,但結果卻是非常好的。JavaServer Faces 在2001年5月通過Java 規范請求(JSR) 127 引入;規范的最終版本,JSF 1.0,在2004年3月3日才發布。而JSF 1.1 (維護發布版) 則是2004年5月27日發布的。參與開發Faces的公司和組織 (除Sun之外)包括Apache軟件基金, BEA 系統, Borland 軟件,5IBM,Oracle,Macromedia,等等。

    這些公司開發的產品可分為3類(某些可能適合不止一類):J2EE 容器,開發工具,和UI 框架。因為JavaServer Faces是一個與工具一起工作和運行于J2EE 容器中的UI框架,這樣做則非常之好。最重要的是這些公司中包括許多業界巨頭。這意味著你可以期望JSF 具有大量的工業支持。并且,如果你的供應商不支持JSF,你也可以免費下載Sun的參考實現 [Sun, JSF RI]。

    要跟蹤最新的JSF 新聞,文章,產品和供應商,請訪問JSF Central [JSF Central],本書作者所運作的一個社區站點。

    JSF,Struts,和其他框架

    我們面對這一情況:有大量的Java web 框架可用。它們中某些,如Struts [ASF, Struts] 和 WebWork [OpenSymphony, WebWork],有助于表單處理和其他問題,比如遵循Model 2,集成數據源,以及通過XML配置文件中心化控制引用的所有應用資源。這些基本框架提供了廣泛的基礎設施,但是還沒有屏蔽基本的HTTP請求響應處理。

    其他框架,象Tapestry [ASF, Tapestry],Oracle的應用開發框架 (ADF) UIX [Oracle, ADF UIX],以及SOFIA [Salmon, SOFIA],都提供一個UI 組件模型和某些事件處理機制。這些UI 框架,包括JSF,目的是簡化整體變成模型。經常,基礎架構和UI 框架具有重疊的功能。

    為了理解這種重疊,你可以想象web 應用架構師一個服務棧。靠近棧底部的服務沒能抽象基礎協議的許多細節;它們更像粗加工品。棧中靠近頂部的服務則隱藏了更多討厭的細節,提供更高級別的抽象。最低層的服務由web servers,Servlet API,和JSP處理。大部分框架都提供一些附加服務的子集。圖1.6顯示了這個棧,以及與JSF,Struts,servlets,JSP,和典型的web server的關系。

    你可以從圖中看到JSF 支持足夠多的服務,這也使得它自己成為強大的框架。在大多數情況下,這就是你需要的東西。后續發布的Faces極有可能也會包括傳統的服務。

    然而,即使Faces 與Struts這樣的框架有些重疊,也并不是必須替代它們。 (事實上,如Struts的領導, Craig McClanahan, 是JavaServer Faces的開發指導) 如果你將他們集成起來,你就可以訪問棧中的所有服務(第 14 章將包含Struts 集成)。你也可以和其他框架一起使用JSF,比如Spring [Spring-Faces]。

    對于面向UI的框架,JSF 和他們很多功能都有重疊。這些項目的某些申明將在其未來版本中支持JSF。Faces 的獨特之處在于有通過JCP的工業巨頭參與的開發聯盟,以及將成為J2EE的一部分。作為結果,它將分享受強有力的工具支持,并將隨很多J2EE server一起交付。


    clip_image002_0000.jpg


    組件無處不在

    令人悲哀的是,“組件”一詞的過度使用在今天已經到處蔓延了。操作系統是一個組件,應用程序是一個組件,EJBs 是組件,庫是組件,甚至廚房的水槽也是。有大量的書論及組件,有好的書指出組件有好多定義存在。

    如果你知道他的確實意義,對這個詞的濫用,你就不會感到陌生。如果你在詞典中查找“組件(component)”這個詞,你就會看到他有一個同義詞供選—整體的一個部分。因此,如果你使用這個詞的字面意思,在一個分布式應用歡迎用,操作系統確實是一個組件。

    更有趣的是,從概念上講,廚房水槽對操作系統相比對Faces組件來說更有共通之處。你不用自己從頭制造它—你只需要購買一個符合你需要的水槽:尺寸,顏色,材料,容器數,等等。對其他廚房用品也是如此,比如櫥柜和工作臺面。所有這些組件都有特定的接口可以使他們能夠和其他東西進行集成,但是依賴于特定的環境服務。(例如,接口管)。最終結果可能是獨特的,但整體是由獨立可重用的部件組成。

    如果我們采用廚房組件的概念,并應用到軟件商,我們會得出這個定義:

    廚房的“環境依賴性”就是諸如房間本身,配管,電路等等的因素。本質上,環境是所有組件的容器。一個容器是擁有組件,并且提供一系列允許進行組件操作的服務的系統。有時,這種操作在IDE (設計時)中進行,有時則在部署環境中運行,比如J2EE server之中 (運行時)。

    短語“獨立部署” 意味著一個組件是一個自包含的單元,可以被安裝到一個容器中。廚房水槽是一個獨立的,自包含的組件,可以安裝在工作臺中。

    當你改造你的廚房時,你雇用一個承包商,由他來組裝你所選擇的組件 (櫥柜,抽屜,水槽等等) 成為一個完整的廚房。我們使用組件構建軟件時,我們也是將各種組件組裝起來,創建能夠運行的軟件系統。

    JSF 組件, Swing 組件, servlet, EJB, JavaBean, ActiveX 控件,以及Delphi 可視組件庫 (VCL) 組件都符合這個定義。但這些組件卻集中于不同的事情。JSF 和Swing 組件單獨針對UI 開發,而ActiveX 和 VCL 控件可以也可以不影響UI。Servlets 和 EJBs 則更粗糙一些— 他們在應用和業務邏輯領域提供大量的功能。

    因為JSF 著眼于UI 組件,我們來相應窄化我們的組件定義。

    如果你是在開發傳統的GUI應用,那么UI 組件的概念應該對你非常熟悉了。JavaServer Faces 的精彩之處在于將標準的UI 組件模型引入到Web世界。

     

    posted on 2005-04-28 10:16 鐵手 閱讀(2470) 評論(4)  編輯  收藏 所屬分類: JavaJSF系列

    評論

    # re: JavaServer Faces簡介 2005-04-28 10:56 Mstar軟件研發小組

    這東西我是比較看好的,但是公司CTO說不成熟。讓我們用Tapestry
      回復  更多評論    

    # re: JavaServer Faces簡介 2005-04-28 11:16 鐵手

    完全可以工業化使用了
      回復  更多評論    

    # re: JavaServer Faces簡介 2006-11-21 21:27 w

    10點鐘的太陽,我看好!
      回復  更多評論    

    # re: JavaServer Faces簡介 2007-06-26 09:37 

    有個問題想請教您:我想使用<a href="******" >的形式觸發manage-bean。怎么做?
      回復  更多評論    
    主站蜘蛛池模板: 亚洲av无码专区在线观看下载| 亚洲av色福利天堂| 亚洲码欧美码一区二区三区| 免费观看黄色的网站| 亚洲欧洲国产综合| 黄网站色在线视频免费观看| 亚洲人成在线中文字幕| 日本免费网址大全在线观看| 亚洲国产精品美女| 国内自产少妇自拍区免费| 亚洲成在人线在线播放无码 | 67194成手机免费观看| 亚洲天堂男人天堂| 蜜臀98精品国产免费观看| 在线亚洲高清揄拍自拍一品区| 午夜无遮挡羞羞漫画免费| 亚洲AV永久无码精品放毛片| 免费国产a国产片高清网站| 色视频在线观看免费| 亚洲人成网77777色在线播放| a级毛片毛片免费观看永久| 亚洲国产人成在线观看69网站| 99国产精品永久免费视频| 亚洲视频在线观看2018| 国产精品免费电影| 一区二区三区在线观看免费 | 在线观看亚洲AV每日更新无码| 免费人成网站在线高清| 男女一边摸一边做爽的免费视频| 亚洲A∨无码一区二区三区 | 无码成A毛片免费| 亚洲乱码中文论理电影| 国产乱弄免费视频| 国产免费一区二区三区不卡| 亚洲人成网站在线观看播放青青| 永久免费观看的毛片的网站| 中文字幕免费在线看电影大全| 亚洲另类小说图片| 亚洲精品国产精品乱码不卡| 99热精品在线免费观看| 亚洲av乱码中文一区二区三区|