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

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

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

    鐵手劍譜

    上善若水
    數(shù)據(jù)加載中……
    JavaServer Faces簡(jiǎn)介

    對(duì)于RAD 工具的四個(gè)層次, JavaServer Faces 定義了其中3個(gè):一個(gè)組件架構(gòu),一個(gè)標(biāo)準(zhǔn)的UI 部件集,以及一個(gè)應(yīng)用架構(gòu)。JSF的組件架構(gòu)定義了通用的方式來(lái)建立UI 部件。此架構(gòu)能驅(qū)動(dòng)標(biāo)準(zhǔn)的JSF UI 組件(按鈕,超鏈接,復(fù)選框,文本框等等),也為第3方組件留了空間。組件是面向事件的,所以JSF 允許你處理客戶產(chǎn)生的事件 (如,文本框中值的變化或者點(diǎn)擊了按鈕)。

    clip_image002.jpg

    因?yàn)閷?duì)Web應(yīng)用來(lái)說(shuō),不象其桌面應(yīng)用堂兄弟,它必須總是要滿足多個(gè)客戶 (比如桌面瀏覽器,移動(dòng)電話和PDA等), JSF 有一個(gè)強(qiáng)大的架構(gòu)來(lái)以不同的方式顯示組件。它也有一個(gè)可擴(kuò)展的機(jī)制來(lái)進(jìn)行輸入校驗(yàn) (如字段長(zhǎng)度) 以及在顯示字符串和對(duì)象之間進(jìn)行轉(zhuǎn)換。

    Faces 也能夠自動(dòng)的保持你的UI 組件和收集用戶輸入值的Java 對(duì)象之間的同步,并且通過(guò)調(diào)用后臺(tái)Bean來(lái)對(duì)事件進(jìn)行響應(yīng)。另外,它有一個(gè)強(qiáng)大的導(dǎo)航系統(tǒng)并且全面支持多語(yǔ)言特征。這些特征構(gòu)成了JSF的應(yīng)用基礎(chǔ)架構(gòu)—即對(duì)新應(yīng)用系統(tǒng)必不可少的基本構(gòu)建塊。

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

    clip_image004.jpg

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

     

    clip_image006.jpg

    如果你點(diǎn)擊一個(gè)Swing 應(yīng)用中的按鈕,它將產(chǎn)生一個(gè)事件,而你可以直接在駐留在桌面中的代碼來(lái)處理該事件。相反, web 瀏覽器并不知道JSF組件和其事件的任何東西;它僅僅知道顯示HTML而已。所以當(dāng)你點(diǎn)擊一個(gè)Faces 應(yīng)用按鈕,它將產(chǎn)生一個(gè)請(qǐng)求,有瀏覽器發(fā)送到服務(wù)器。Faces 負(fù)責(zé)將該請(qǐng)求轉(zhuǎn)換成一個(gè)可以被服務(wù)器中的應(yīng)用邏輯所處理的事件。它也負(fù)責(zé)保證你在服務(wù)器所定義的每一個(gè)UI 部件都正確顯示給瀏覽器。

    clip_image008.jpg

    圖1.4 顯示了一個(gè)Faces 應(yīng)用的高階視圖。你可以看到,應(yīng)用運(yùn)行在服務(wù)器上可以和其他子系統(tǒng)集成,如EJB服務(wù)或者數(shù)據(jù)庫(kù)服務(wù)。當(dāng)然, JSF還提供許多其他服務(wù)可以幫助你你更小的代價(jià)構(gòu)建強(qiáng)大的Web應(yīng)用。

    JavaServer Faces 有一個(gè)特定的目標(biāo):使web 開(kāi)發(fā)更快更容易。它允許開(kāi)發(fā)人員以組件,事件,后臺(tái)Bean以及它們之間的交互來(lái)進(jìn)行思考,而不是請(qǐng)求,響應(yīng)和標(biāo)記。換句話說(shuō),它掩蓋了Web開(kāi)發(fā)的大量的復(fù)雜性,是開(kāi)發(fā)人員能夠集中于如何使他們的應(yīng)用做的最好。

     

    工業(yè)支持

    對(duì)JCP社區(qū)和Sun 擴(kuò)展Java的方式來(lái)說(shuō),最好的事情莫過(guò)于有大量的公司,組織和個(gè)人投身其中。通過(guò)JCP 產(chǎn)生一種規(guī)范實(shí)際上算不上快速,但結(jié)果卻是非常好的。JavaServer Faces 在2001年5月通過(guò)Java 規(guī)范請(qǐng)求(JSR) 127 引入;規(guī)范的最終版本,JSF 1.0,在2004年3月3日才發(fā)布。而JSF 1.1 (維護(hù)發(fā)布版) 則是2004年5月27日發(fā)布的。參與開(kāi)發(fā)Faces的公司和組織 (除Sun之外)包括Apache軟件基金, BEA 系統(tǒng), Borland 軟件,5IBM,Oracle,Macromedia,等等。

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

    要跟蹤最新的JSF 新聞,文章,產(chǎn)品和供應(yīng)商,請(qǐng)?jiān)L問(wèn)JSF Central [JSF Central],本書(shū)作者所運(yùn)作的一個(gè)社區(qū)站點(diǎn)。

    JSF,Struts,和其他框架

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

    其他框架,象Tapestry [ASF, Tapestry],Oracle的應(yīng)用開(kāi)發(fā)框架 (ADF) UIX [Oracle, ADF UIX],以及SOFIA [Salmon, SOFIA],都提供一個(gè)UI 組件模型和某些事件處理機(jī)制。這些UI 框架,包括JSF,目的是簡(jiǎn)化整體變成模型。經(jīng)常,基礎(chǔ)架構(gòu)和UI 框架具有重疊的功能。

    為了理解這種重疊,你可以想象web 應(yīng)用架構(gòu)師一個(gè)服務(wù)棧。靠近棧底部的服務(wù)沒(méi)能抽象基礎(chǔ)協(xié)議的許多細(xì)節(jié);它們更像粗加工品。棧中靠近頂部的服務(wù)則隱藏了更多討厭的細(xì)節(jié),提供更高級(jí)別的抽象。最低層的服務(wù)由web servers,Servlet API,和JSP處理。大部分框架都提供一些附加服務(wù)的子集。圖1.6顯示了這個(gè)棧,以及與JSF,Struts,servlets,JSP,和典型的web server的關(guān)系。

    你可以從圖中看到JSF 支持足夠多的服務(wù),這也使得它自己成為強(qiáng)大的框架。在大多數(shù)情況下,這就是你需要的東西。后續(xù)發(fā)布的Faces極有可能也會(huì)包括傳統(tǒng)的服務(wù)。

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

    對(duì)于面向UI的框架,JSF 和他們很多功能都有重疊。這些項(xiàng)目的某些申明將在其未來(lái)版本中支持JSF。Faces 的獨(dú)特之處在于有通過(guò)JCP的工業(yè)巨頭參與的開(kāi)發(fā)聯(lián)盟,以及將成為J2EE的一部分。作為結(jié)果,它將分享受強(qiáng)有力的工具支持,并將隨很多J2EE server一起交付。


    clip_image002_0000.jpg


    組件無(wú)處不在

    令人悲哀的是,“組件”一詞的過(guò)度使用在今天已經(jīng)到處蔓延了。操作系統(tǒng)是一個(gè)組件,應(yīng)用程序是一個(gè)組件,EJBs 是組件,庫(kù)是組件,甚至廚房的水槽也是。有大量的書(shū)論及組件,有好的書(shū)指出組件有好多定義存在。

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

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

    如果我們采用廚房組件的概念,并應(yīng)用到軟件商,我們會(huì)得出這個(gè)定義:

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

    短語(yǔ)“獨(dú)立部署” 意味著一個(gè)組件是一個(gè)自包含的單元,可以被安裝到一個(gè)容器中。廚房水槽是一個(gè)獨(dú)立的,自包含的組件,可以安裝在工作臺(tái)中。

    當(dāng)你改造你的廚房時(shí),你雇用一個(gè)承包商,由他來(lái)組裝你所選擇的組件 (櫥柜,抽屜,水槽等等) 成為一個(gè)完整的廚房。我們使用組件構(gòu)建軟件時(shí),我們也是將各種組件組裝起來(lái),創(chuàng)建能夠運(yùn)行的軟件系統(tǒng)。

    JSF 組件, Swing 組件, servlet, EJB, JavaBean, ActiveX 控件,以及Delphi 可視組件庫(kù) (VCL) 組件都符合這個(gè)定義。但這些組件卻集中于不同的事情。JSF 和Swing 組件單獨(dú)針對(duì)UI 開(kāi)發(fā),而ActiveX 和 VCL 控件可以也可以不影響UI。Servlets 和 EJBs 則更粗糙一些— 他們?cè)趹?yīng)用和業(yè)務(wù)邏輯領(lǐng)域提供大量的功能。

    因?yàn)镴SF 著眼于UI 組件,我們來(lái)相應(yīng)窄化我們的組件定義。

    如果你是在開(kāi)發(fā)傳統(tǒng)的GUI應(yīng)用,那么UI 組件的概念應(yīng)該對(duì)你非常熟悉了。JavaServer Faces 的精彩之處在于將標(biāo)準(zhǔn)的UI 組件模型引入到Web世界。

     

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

    評(píng)論

    # re: JavaServer Faces簡(jiǎn)介 2005-04-28 10:56 Mstar軟件研發(fā)小組

    這東西我是比較看好的,但是公司CTO說(shuō)不成熟。讓我們用Tapestry

    # re: JavaServer Faces簡(jiǎn)介 2005-04-28 11:16 鐵手

    完全可以工業(yè)化使用了

    # re: JavaServer Faces簡(jiǎn)介 2006-11-21 21:27 w

    10點(diǎn)鐘的太陽(yáng),我看好!

    # re: JavaServer Faces簡(jiǎn)介 2007-06-26 09:37 

    有個(gè)問(wèn)題想請(qǐng)教您:我想使用<a href="******" >的形式觸發(fā)manage-bean。怎么做?
    主站蜘蛛池模板: 亚洲日韩乱码中文无码蜜桃臀| 亚洲字幕AV一区二区三区四区| 亚洲精品在线免费观看视频| 亚洲综合一区无码精品| 亚洲精品无码日韩国产不卡?V| 久久国产免费观看精品| 中文字幕无码精品亚洲资源网久久 | 一个人免费播放在线视频看片| 亚洲av无码国产精品夜色午夜 | 青娱分类视频精品免费2| 国产成人亚洲精品蜜芽影院| 亚洲人成图片小说网站| 日韩高清免费在线观看| 最新国产乱人伦偷精品免费网站| 激情五月亚洲色图| 久久亚洲精品无码| 亚洲AⅤ永久无码精品AA| 国产成人yy免费视频| 精品久久久久久国产免费了 | 永久免费不卡在线观看黄网站| 亚洲综合激情五月色一区| 亚洲大成色www永久网站| 暖暖免费高清日本中文| 无码人妻精品中文字幕免费| 羞羞视频免费网站含羞草| 亚洲国产精品张柏芝在线观看| 国产aⅴ无码专区亚洲av麻豆| 我要看免费的毛片| 最近中文字幕高清免费中文字幕mv | 亚洲日韩国产一区二区三区在线 | 一区二区在线视频免费观看| 最新亚洲精品国偷自产在线| 91在线亚洲精品专区| 国产精品亚洲产品一区二区三区 | 免费看国产一级特黄aa大片| 久草视频免费在线观看| 污污网站18禁在线永久免费观看| fc2成年免费共享视频网站| 无码一区二区三区亚洲人妻| 国产精品久久亚洲不卡动漫| 亚洲黄色网址在线观看|