自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

簡(jiǎn)述JSF是什么

開(kāi)發(fā) 后端
本文介紹JSF是什么,以及JSF 體系結(jié)構(gòu),JSF 生命周期和JavaServer Faces 的用戶界面組件等。

JSF是什么

JSF是什么?JavaServer Faces (JSF) 是一種用于構(gòu)建 Web 應(yīng)用程序的新標(biāo)準(zhǔn) Java 框架。它提供了一種以組件為中心來(lái)開(kāi)發(fā) Java Web 用戶界面的方法,從而簡(jiǎn)化了開(kāi)發(fā)。JavaServer Faces 還引起了廣大 Java/Web 開(kāi)發(fā)人員的興趣?!捌髽I(yè)開(kāi)發(fā)人員”和 Web 設(shè)計(jì)人員將發(fā)現(xiàn) JSF 開(kāi)發(fā)可以簡(jiǎn)單到只需將用戶界面 (UI) 組件拖放到頁(yè)面上,而“系統(tǒng)開(kāi)發(fā)人員”將發(fā)現(xiàn)豐富而強(qiáng)健的 JSF API 為他們提供了無(wú)與倫比的功能和編程靈活性。JSF 還通過(guò)將良好構(gòu)建的模型-視圖-控制器 (MVC) 設(shè)計(jì)模式集成到它的體系結(jié)構(gòu)中,確保了應(yīng)用程序具有更高的可維護(hù)性。最后,由于 JSF 是通過(guò) Java Community Process (JCP) 開(kāi)發(fā)的一種 Java 標(biāo)準(zhǔn),因此開(kāi)發(fā)工具供應(yīng)商完全能夠?yàn)?JavaServer Faces 提供易于使用的、高效的可視化開(kāi)發(fā)環(huán)境。

JSF 體系結(jié)構(gòu)
JavaServer Faces 的 MVC 實(shí)現(xiàn)

JSF 的主要優(yōu)勢(shì)之一就是它既是 Java Web 用戶界面標(biāo)準(zhǔn)又是嚴(yán)格遵循模型-視圖-控制器 (MVC) 設(shè)計(jì)模式的框架。用戶界面代碼(視圖)與應(yīng)用程序數(shù)據(jù)和邏輯(模型)的清晰分離使 JSF 應(yīng)用程序更易于管理。為了準(zhǔn)備提供頁(yè)面對(duì)應(yīng)用程序數(shù)據(jù)訪問(wèn)的 JSF 上下文和防止對(duì)頁(yè)面未授權(quán)或不正確的訪問(wèn),所有與應(yīng)用程序的用戶交互均由一個(gè)前端“Faces”servlet(控制器)來(lái)處理。

JavaServer Faces 的 MVC 實(shí)現(xiàn)

圖1 JavaServer Faces 的 MVC 實(shí)現(xiàn)

JSF 生命周期

Faces Controller servlet 充當(dāng)用戶和 JSF 應(yīng)用程序之間的紐帶。它在明確限定的 JSF 生命周期(規(guī)定了用戶請(qǐng)求之間的整個(gè)事件流)的范圍內(nèi)工作。例如,一收到訪問(wèn) JSF 應(yīng)用程序的初始 Web 請(qǐng)求,F(xiàn)aces Controller servlet 便通過(guò)首先準(zhǔn)備 JSF 上下文(存放所有應(yīng)用程序數(shù)據(jù)的一個(gè) Java 對(duì)象)來(lái)處理請(qǐng)求。然后控制器把用戶指引到所請(qǐng)求的頁(yè)面。該頁(yè)面通常使用簡(jiǎn)單的表達(dá)式語(yǔ)言來(lái)處理來(lái)自 JSF 上下文的應(yīng)用程序數(shù)據(jù)。一收到后續(xù)請(qǐng)求,控制器就更新所有模型數(shù)據(jù)(假設(shè)輸入了新數(shù)據(jù))。JSF 開(kāi)發(fā)人員可以通過(guò)編程的方式在應(yīng)用程序運(yùn)行期間隨時(shí)訪問(wèn)整個(gè) JSF 生命周期,從而可以隨時(shí)對(duì)應(yīng)用程序的行為進(jìn)行高度控制。

JavaServer Faces 的用戶界面組件

JavaServer Faces 的真正威力在于它的用戶界面組件模型。在該模型中,應(yīng)用程序完全用組件集合構(gòu)建,這些組件可以針對(duì)多種客戶端類型用不同的方式來(lái)進(jìn)行顯示。與其他專有技術(shù)(如 ASP.Net)有點(diǎn)類似,JSF 的 UI 組件模型技術(shù)使開(kāi)發(fā)人員能夠使用預(yù)先構(gòu)建的用戶界面 (UI) 組件來(lái)構(gòu)建 Web 用戶界面(而非完全從頭構(gòu)建用戶界面),從而提供了前所未有的開(kāi)發(fā)效率。JSF UI 組件有多種形式,可以簡(jiǎn)單到只是顯示文本的 outputLabel,或者復(fù)雜到可以表示來(lái)自數(shù)據(jù)集合(如數(shù)據(jù)庫(kù)表)的表格化數(shù)據(jù)的 dataTable。

JavaServer Faces 規(guī)范在其參考實(shí)施中提供了一組基本 UI 組件,這些組件本身是非常有用的。它們包括兩個(gè)組件庫(kù),即“HTML”組件庫(kù) — 它大部分映射了標(biāo)準(zhǔn)的 HTML 輸入元素;以及“核心”庫(kù) — 它輔助常見(jiàn)的應(yīng)用程序開(kāi)發(fā)任務(wù)(如,國(guó)際化和驗(yàn)證/轉(zhuǎn)換輸入數(shù)據(jù))。除了提供一個(gè)基本 UI 組件庫(kù)之外,JSF API 還提供了擴(kuò)展和創(chuàng)建定制 JSF UI 組件的功能,從而在基本組件之上提供更多功能。

其他用戶界面組件庫(kù)

由于 JSF API 的豐富性和靈活性,許多 Java 開(kāi)發(fā)人員開(kāi)始創(chuàng)建新的 JSF 組件庫(kù)和實(shí)現(xiàn)。Oracle 的 ADF Faces 是一個(gè)完全符合 JSF 規(guī)范的組件庫(kù),它為 JSF 應(yīng)用程序開(kāi)發(fā)提供了一組廣泛的增強(qiáng) UI 組件。這些組件包括針對(duì)每種客戶端類型的多種呈現(xiàn)器、高級(jí)表格、顏色和日期選擇器以及大量通用組件(如菜單、命令按鈕、轉(zhuǎn)移選擇器和進(jìn)度指示計(jì))。

Oracle 的 ADF Faces JSF UI 組件

圖2 Oracle 的 ADF Faces JSF UI 組件

除了 Oracle 的 ADF Faces 之外,還有其他新的 JSF 組件庫(kù)開(kāi)始從開(kāi)放源代碼社區(qū)和軟件供應(yīng)商社區(qū)中出現(xiàn)。MyFaces 就是一個(gè)新 JSF UI 組件庫(kù)的例子,它通過(guò) Apache 作為一個(gè)開(kāi)放源代碼項(xiàng)目提供的。Myfaces 還是對(duì) JSF 基本 UI 組件的增強(qiáng),它擁有更廣泛的 UI 功能,如集成的 Tiles 支持、支持 Javascript 的菜單和樹控件。

開(kāi)放源代碼的 MyFaces 實(shí)現(xiàn)和 UI 組件庫(kù)

圖3:開(kāi)放源代碼的 MyFaces 實(shí)現(xiàn)和 UI 組件庫(kù)

JSF UI 組件的可插入呈現(xiàn)技術(shù)

JSF UI 組件技術(shù)最引人注目一個(gè)方面就是它的可插入呈現(xiàn)功能。JSF UI 組件能夠根據(jù)查看組件的客戶端的類型來(lái)以不同方式呈現(xiàn)自身。例如,HTML 瀏覽器將看到特定 UI 組件的“HTML 瀏覽器友好”版本,而支持無(wú)線或 WAP 的微型設(shè)備將看到同一 UI 組件的“WML 友好”版本!JSF 通過(guò)解除 UI 組件與其呈現(xiàn)邏輯之間的耦合從而能夠?yàn)橥?UI 組件創(chuàng)建多個(gè)呈現(xiàn)器實(shí)現(xiàn)了這一功能。不同的呈現(xiàn)器可以與 UI 組件相關(guān)聯(lián),在運(yùn)行時(shí) UI 組件可以根據(jù)請(qǐng)求的客戶端類型決定使用哪個(gè)呈現(xiàn)器。

一個(gè) ADF Faces 表格組件針對(duì)無(wú)線客戶端和 HTML 客戶端進(jìn)行了不同的呈現(xiàn)

圖4:一個(gè) ADF Faces 表格組件針對(duì)無(wú)線客戶端和 HTML 客戶端進(jìn)行了不同的呈現(xiàn)

還應(yīng)當(dāng)指出的是,由于 JSF 的可插入呈現(xiàn)功能,使得 JSF UI 組件能夠顯示任何類型的數(shù)據(jù),無(wú)論它是標(biāo)記數(shù)據(jù)(如 HTML、XML、WML 等)還是二進(jìn)制數(shù)據(jù)。例如,UI 組件還可以顯示二進(jìn)制數(shù)據(jù),如圖像流或不同的文檔類型,如 SVG、PDF 和 Word。
 
一個(gè)新的 JSF 組件開(kāi)發(fā)人員社區(qū)

隨著 JSF 開(kāi)發(fā)人員和擁護(hù)者社區(qū)的不斷壯大,現(xiàn)在有幾個(gè)網(wǎng)站致力于進(jìn)一步推動(dòng)獨(dú)立的 JSF 開(kāi)發(fā)。JSFCentral 就是一個(gè)完全為 JSF 開(kāi)發(fā)社區(qū)服務(wù)的新網(wǎng)站。它包含 JSF 技術(shù)信息、產(chǎn)品/組件信息以及大量與 JSF 相關(guān)的文章。

JSF 開(kāi)發(fā)工具

因?yàn)?JavaServer Faces 是一種標(biāo)準(zhǔn)的 Java 技術(shù),因此軟件開(kāi)發(fā)工具完全能夠?yàn)?JavaServer Faces 提供高級(jí)的集成開(kāi)發(fā)工具支持。多個(gè)供應(yīng)商現(xiàn)在不同程度地支持 JSF 開(kāi)發(fā),這大大提高了 JSF 的易用性和功能。Oracle、Sun、Borland 和 IBM 都為 JavaServer Faces 提供了開(kāi)發(fā)環(huán)境。由于開(kāi)發(fā)工具供應(yīng)商在競(jìng)相提供更好、更簡(jiǎn)單和更多的開(kāi)發(fā)環(huán)境,因此基于 IDE 的 JSF 開(kāi)發(fā)擁有美好的前景!

Oracle 的 JDeveloper 提供高效、可視化的 JSF 開(kāi)發(fā)體驗(yàn)

圖5:Oracle 的 JDeveloper 提供高效、可視化的 JSF 開(kāi)發(fā)體驗(yàn)

總結(jié)

JSF是什么?JavaServer Faces 通過(guò)提供模型-視圖-控制器設(shè)計(jì)模式的一個(gè)簡(jiǎn)潔實(shí)現(xiàn),同時(shí)在不犧牲開(kāi)發(fā)能力和靈活性的前提下提供高效的以組件為中心的開(kāi)發(fā),解決了 Java Web 開(kāi)發(fā)的許多歷史問(wèn)題。此外,因?yàn)?JSF 是一種 Java 標(biāo)準(zhǔn),因此多個(gè)軟件供應(yīng)商將繼續(xù)提供始終高效的開(kāi)發(fā)環(huán)境,這些開(kāi)發(fā)環(huán)境毫無(wú)疑問(wèn)將達(dá)到或很可能超過(guò)專有的可視化開(kāi)發(fā)環(huán)境。請(qǐng)繼續(xù)關(guān)注!

【編輯推薦】

  1. JSF與Spring的集成
  2. 學(xué)習(xí)JSF的生命周期
  3. 在JBOSS服務(wù)器上使用Myfaces的JSF實(shí)現(xiàn)
  4. 選擇JSF的理由:從UI組件開(kāi)始
  5. JSF中f:loadBundle標(biāo)簽的使用方法
責(zé)任編輯:佚名 來(lái)源: CSDN
相關(guān)推薦

2009-06-22 14:13:08

JSF入門

2009-06-22 15:52:15

JSF測(cè)試框架

2009-06-22 13:27:01

JSF組件模型

2009-06-24 11:39:45

學(xué)習(xí)JSF

2009-06-23 09:53:10

JSF程序配置

2009-09-28 11:12:52

Hibernate O

2009-06-25 15:09:34

選擇JSFESRI

2009-09-23 17:56:45

JSF入門

2009-06-25 11:11:25

控制JSF切入點(diǎn)

2009-06-26 13:48:57

G4JSFGWTJSF

2009-06-26 14:06:08

JSF基礎(chǔ)框架

2017-03-21 23:29:44

DevOps運(yùn)維開(kāi)發(fā)

2009-06-29 13:06:25

JSF程序

2009-06-23 15:51:00

JSF框架

2009-06-26 10:22:58

JSF測(cè)試

2009-06-22 13:16:49

JavaServer JSF

2009-06-22 14:22:41

JSF和Tapestr

2009-06-23 17:38:57

ExternalConJSF

2009-06-24 13:06:41

JSF組件Facelets

2009-06-29 09:00:14

JSFJava
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)