張 捷
(黃岡職業(yè)技術(shù)學(xué)院,湖北 黃岡 438002)
JSF框架開發(fā)技術(shù)淺析
張捷
(黃岡職業(yè)技術(shù)學(xué)院,湖北 黃岡 438002)
JSF是由 SUN公司推出的一種面向組件 Web應(yīng)用程序的開發(fā)技術(shù),是J2EE 5的一個(gè)重要組成部分,同時(shí)也是對(duì)諸多Web程序規(guī)范的一種補(bǔ)充。文章主要是對(duì)JSF以及基于JSF的Web應(yīng)用程序的開發(fā)步驟進(jìn)行介紹。
Java;JSF技術(shù);Web應(yīng)用
在“互聯(lián)網(wǎng)+”的時(shí)代到臨之際,Web應(yīng)用的范圍越來越廣泛。對(duì)于基于J2EE的平臺(tái)來說,該平臺(tái)是實(shí)現(xiàn)分布式企業(yè)應(yīng)用的開發(fā)平臺(tái),但是由于可視化工具的支持較少,開發(fā)者在開發(fā)Web用戶界面時(shí)編寫代碼任務(wù)重,開發(fā)效率低且難度大。Java 服務(wù)器界面(Java Server Faces,JSF)框架技術(shù)是基于MVC模式的開發(fā)框架,有豐富的用戶界面組件,集普遍性、簡單性、強(qiáng)大功能于一身,使得Web開發(fā)變得簡單。JSF不僅包含于J2EE 規(guī)范中,而且允許開發(fā)者在一個(gè)頁面中迅速高效地集合UI 組件去構(gòu)建想要的Web界面。因此,開發(fā)者可以專注于應(yīng)用業(yè)務(wù)邏輯的實(shí)現(xiàn)而擺脫HTTP細(xì)節(jié)方面的束縛。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展JSF的實(shí)現(xiàn)會(huì)被越來越多的供應(yīng)商所提供,而且JSF也會(huì)成為一種主流的新的Web 框架。
JSF是一種新標(biāo)準(zhǔn)的Java框架,JSF在構(gòu)建Web應(yīng)用程序時(shí),使用以組件為中心的方法來開發(fā)Jave Web用戶界面,簡化程序的開發(fā)過程。為了確保應(yīng)用程序的可維護(hù)性更高,JSF的體系結(jié)構(gòu)中還集成了模型—視圖—控制器(Model, View, Controller, MVC)的設(shè)計(jì)模式。
JSF是一個(gè)基于組件的框架,它和傳統(tǒng)請(qǐng)求驅(qū)動(dòng)的MVC開發(fā)框架不同。在開發(fā)工具的支持下,開發(fā)者不需要做太多的代碼設(shè)計(jì),Web 用戶界面可以通過拖放組件的方式來進(jìn)行可視化編輯,然后將用戶界面上的組件與數(shù)據(jù)源進(jìn)行綁定,并將用戶界面管理問題交給服務(wù)器端處理就可以完成程序開發(fā)的全部過程。并且在綁定界面的值和方法同后臺(tái)數(shù)據(jù)時(shí),JSF使用統(tǒng)一表達(dá)式語言(Unified Expression Language, UEL)代替了以往冗長而毫無意義的 request.getParameter(),簡化了表達(dá)式,提高了效率。
JSF的請(qǐng)求生命周期根據(jù)規(guī)范定義,包含以下6個(gè)階段,如圖1所示。
(1)重置 UI視圖階段:對(duì)于頁面對(duì)應(yīng)的組件樹來說,一般只構(gòu)建一次。用戶在請(qǐng)求頁面所對(duì)應(yīng)的組件樹時(shí),如果組件樹不存在,該階段會(huì)則構(gòu)建該頁面的組件樹,如果存在則會(huì)使用已有的組件樹。
(2)應(yīng)用請(qǐng)求之階段:先讀取客戶端參數(shù),使用processDecodes方法處理各個(gè)組件,然后在內(nèi)部調(diào)用decode方法,并且由Renderer來執(zhí)行decode方法。
(3)處理驗(yàn)證階段:對(duì)每個(gè)組件的信息進(jìn)行驗(yàn)證。
(4)更新數(shù)據(jù)模型階段:在這個(gè)階段,JSF會(huì)更新用戶界面的每個(gè)組件數(shù)據(jù)模型,然后為后面的實(shí)踐應(yīng)用處理打好基礎(chǔ),做好準(zhǔn)備。
(5)應(yīng)用調(diào)用階段:處理之前排入隊(duì)列的所有應(yīng)用級(jí)事件。
(6)呈現(xiàn)響應(yīng)階段:渲染組件樹的當(dāng)前狀態(tài),并且為當(dāng)前請(qǐng)求準(zhǔn)備響應(yīng)。一旦處理完畢,Web服務(wù)器將結(jié)果通過物理傳輸發(fā)回給用戶,然后在用戶的瀏覽器中顯示。
圖1 JSF 請(qǐng)求處理生命周期
相比傳統(tǒng)的JSP/Servlet 框架來說,JSF具有以下8個(gè)優(yōu)勢:
(1)全面使用了UI組件。JSF的組件是真正意義上的 UI組件,UI組件能幫助程序員在極大程度上簡化代碼,程序員在設(shè)計(jì)程序過程中,不需要通過復(fù)雜代碼使其保持一致性,而更多地關(guān)注如何實(shí)現(xiàn)業(yè)務(wù)邏輯,程序員在JSF中開發(fā)Web應(yīng)用程序完全不需要考慮代碼之間的配合,只需考慮業(yè)務(wù)邏輯,JSF后臺(tái)能保證合適的代碼在合適的時(shí)候被執(zhí)行。
(2)界面到業(yè)務(wù)邏輯的直接映射。如Web編輯最常見任務(wù)表單提交。在JSF下,復(fù)雜的解碼、類型轉(zhuǎn)換、有效性驗(yàn)證、狀態(tài)保存、數(shù)據(jù)更新等操作這些工作的很大一部分都由框架承擔(dān),程序員的工作負(fù)擔(dān)大大減輕。
(3)多階段劃分請(qǐng)求處理生命周期。JSF的生命周期相對(duì)與傳統(tǒng)的JSP框架來說,更加復(fù)雜。一個(gè)完整的Web應(yīng)用程序的請(qǐng)求處理生命周期會(huì)被JSF劃分成6個(gè)階段,分成多個(gè)處理階段帶來的最大好處就是,程序員可以在程序中引入更多的處理功能,并且可以讓JSF框架來管理這一切。程序員在工作量沒有增加的情況下可以獲得更多的控制能力。
(4)各種各樣的可視化圖形開發(fā)工具。JSF帶來Web應(yīng)用程序開發(fā)方式革命性變化的同時(shí),市場上各種開發(fā)工具也隨之改變,應(yīng)運(yùn)而生。特別是圖形化的開發(fā)工具,百家齊鳴,互爭長短。比較有名的例如:Borland公司的JBuilder,SUN公司的Java Creator Studio,Bea公司的Workshopfor JSF等等。
(5)程序員和網(wǎng)頁開發(fā)人員分離。傳統(tǒng)開發(fā)中,往往會(huì)涉及網(wǎng)頁設(shè)計(jì)人員不熟悉的標(biāo)簽,甚至是Java代碼,使得網(wǎng)頁設(shè)計(jì)人員與程序員工作相互交織、無法區(qū)分。在JSF中,只需要一套標(biāo)準(zhǔn)的UI組件和優(yōu)秀網(wǎng)頁編輯工具,程序員與網(wǎng)頁設(shè)計(jì)人員可以各司其職,互不干擾,充分發(fā)揮團(tuán)隊(duì)合作的優(yōu)勢。
(6)事件驅(qū)動(dòng)模式。事件在面向?qū)ο蟮某绦蛟O(shè)計(jì)中是一個(gè)很重要的組成部分,用戶和程序間可以通過事件處理來進(jìn)行很好的溝通和交流。在傳統(tǒng)Web應(yīng)用程序開發(fā)中,程序員在實(shí)現(xiàn)業(yè)務(wù)邏輯之外的功能市往往需要編寫大量代碼,浪費(fèi)時(shí)間且效率低下。JSF的組件可以產(chǎn)生事件(例如值變化的事件),因此,JSF可以通過類似 JavaBean 的事件模式,讓程序員編寫邏輯代碼對(duì)事件迅速作出響應(yīng)。很好地解決了傳統(tǒng)的Web 應(yīng)用程序開發(fā)需要編寫大量代碼的這種狀況。
(7)全面支持用戶的自定義。JSF有很多開放的接口,這些接口可以讓程序員根據(jù)自己的愛好和習(xí)慣更好地定義屬于自己的開發(fā)框架,滿足不同程序開發(fā)人員的不同需要。
(8)Web 應(yīng)用開發(fā)的官方標(biāo)準(zhǔn)。JSF是SUN Java EE 5的重要組成部分,是當(dāng)前Web開發(fā)的官方標(biāo)準(zhǔn)。在如今開發(fā)框架泛濫的時(shí)代,SUN公司樹立Web開發(fā)標(biāo)準(zhǔn)能傲視群雄,獨(dú)領(lǐng)風(fēng)騷。JSF在Web應(yīng)用開發(fā)領(lǐng)域的領(lǐng)先的地位毋庸置疑。
JSF是構(gòu)建Web應(yīng)用程序新的標(biāo)準(zhǔn)框架,使用JSF開發(fā)Web應(yīng)用程序可以大大提高Web應(yīng)用程序開發(fā)、運(yùn)行、調(diào)試的效率。其中,使用快速開放工具RAD是實(shí)現(xiàn)JSF可視化開發(fā)的先決條件。RAD快速開發(fā)工具可以使程序開發(fā)的整個(gè)過程顯得尤為快捷和高效。一般JSF開發(fā)Web應(yīng)用程序分為3個(gè)步驟。
(1)模型設(shè)計(jì)(Model)。JSF的模型層主要通過JavaBean 程序來實(shí)現(xiàn),模型層在MVC開發(fā)模式下主要是用于實(shí)現(xiàn)業(yè)務(wù)邏輯的。設(shè)計(jì)JSF的模型需要分析頁面中組件,并依據(jù)組件處理的業(yè)務(wù)邏輯來設(shè)計(jì)。在JSF中,界面表示和應(yīng)用程序邏輯是完全分離的,因此,程序員只需要在模型設(shè)計(jì)部分考慮程序的邏輯功能就可以了,不需要考慮數(shù)據(jù)的表現(xiàn)形式。
(2)視圖設(shè)計(jì)(View)。作為與用戶交互的視圖層是JSF技術(shù)重點(diǎn)所在,是由JSF頁面來實(shí)現(xiàn)應(yīng)用程序的視圖的。用戶在開發(fā)工具的支持下,僅僅只需可以利用組件就可以很輕松地設(shè)計(jì)好Web 用戶界面,并進(jìn)行事件處理、數(shù)據(jù)驗(yàn)證等程序管理問題。用戶只需要設(shè)計(jì)好每個(gè)JSP頁面,并在頁面中定義好組件,將組件與應(yīng)用層的JavaBean進(jìn)行綁定就可以完成程序的整個(gè)開發(fā)過程。利用RAD工具在不需要手寫大量代碼的情況下,通過拖放組件的方式輕松實(shí)現(xiàn)頁面文件。頁面對(duì)應(yīng)的java 文件會(huì)由開發(fā)工具自動(dòng)生成,頁面的JSF組件會(huì)在文件中被定義好,并且其setter、getter方法以及JSF組件的“action”屬性對(duì)應(yīng)的方法也會(huì)一并生成定義。程序員可以在已有程序的基礎(chǔ)上很方便地進(jìn)行修改和調(diào)試。
(3)控制器設(shè)計(jì)(Controller)。在模型層(Model)與視圖層(View)之間存在著控制器(Control),控制器的主要作用是控制管理視圖與模型之間的交互工作。設(shè)計(jì)JSF的控制器是需要用到faces,javax,F(xiàn)acesServlet,We-bapp這幾個(gè)類,并在配置文件faces config.xml和Web. xml中完成的。具體步驟如下:首先,要分析應(yīng)用程序的具體情況,然后根據(jù)具體情況來配置Web應(yīng)用程序的Web.xml文件。Web.xml文件主要用于實(shí)現(xiàn)部署的描述符并且控制JSF的生命周期;然后,配置實(shí)現(xiàn)導(dǎo)航的faces-config.xml文件,在文件中控制頁面之間的跳轉(zhuǎn)流程是由此文件實(shí)現(xiàn)的。
JSF是基于MVC模式的開發(fā)框架,使用JSF開發(fā)Web應(yīng)用程序可以使開發(fā)過程簡潔而高效,并能使Web應(yīng)用程序獲得更好的擴(kuò)展。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,JSF的應(yīng)用范圍會(huì)更加廣泛,JSF的功能也會(huì)越來越強(qiáng)大,基于JSF的開發(fā)必將成為當(dāng)前主流的開發(fā)模式。
[1]China IT Lab. JSF 框架中使用的設(shè)計(jì)模式介紹[EB/OL].(2010-10-25)[2009-04-20].http://Java.chinaitlab.com/model/727604.html.
[2]朱睿. JSF與Web之完美組合[J].軟件世界,2007(7):66-67.
[3]裴嫣珺. JSF技術(shù)的應(yīng)用及發(fā)展趨勢[J].上海第二工業(yè)大學(xué)學(xué)報(bào),2009(3):235-241.
[4]雷遠(yuǎn)平.基于JSF技術(shù)的Web應(yīng)用開發(fā)研究[J].計(jì)算機(jī)與信息技術(shù),2006(12):27-28.
Analysis of JSF framework development technology
Zhang Jie
(Huanggang Polytechnic College, Huanggang 438002, China)
JSF is a kind of development technology component oriented Web application introduced by SUN company, and it is also an important part of J2EE 5, which is also a supplement to the many Web program code. This paper is an introduction of JSF, and introduces the development process of JSFWeb application based on.
Java; JSF technology;Web application
張捷(1979— ),男,湖北黃岡,碩士,副教授;研究方向:軟件設(shè)計(jì),數(shù)據(jù)庫管理。