JSF進(jìn)行Web開(kāi)發(fā)的三大優(yōu)勢(shì)
JSF優(yōu)勢(shì)之一:UI組件(UI-component)
UI組件(UI-component)一直是桌面程序的專(zhuān)利,Web程序中,雖然HTML定義了基本的UI標(biāo)簽,但要使這些UI標(biāo)簽像UI組件那樣工作,還需要很多代碼片斷來(lái)處理數(shù)據(jù)及其表現(xiàn)形式,而且有效地組織這些代碼片斷使其協(xié)調(diào)一致也是一件繁瑣的工作。JSF的UI組件是真正意義上的UI組件,能極大地簡(jiǎn)化程序員的工作,例如,在頁(yè)面上放置一個(gè)文本輸入框,這個(gè)輸入框立即具備了數(shù)據(jù)填充、界面更新、事件偵聽(tīng)、動(dòng)作觸發(fā)、有效性檢查和類(lèi)型轉(zhuǎn)換的功能。更為重要的是,程序員只需根據(jù)業(yè)務(wù)邏輯編寫(xiě)核心業(yè)務(wù)代碼,JSF會(huì)保證代碼在合適的時(shí)候被執(zhí)行,完全不用考慮代碼與代碼之間該如何來(lái)配合。
JSF優(yōu)勢(shì)之二:事件驅(qū)動(dòng)模式
事件是面向?qū)ο蠓椒ǖ闹匾M成部分,對(duì)象之間通過(guò)事件進(jìn)行溝通和交流,使得一個(gè)或多個(gè)對(duì)象能夠?qū)α硪粋€(gè)對(duì)象的行為作出響應(yīng),共同合作去完成一項(xiàng)業(yè)務(wù)邏輯。通常,編寫(xiě)Web程序時(shí),程序員要為對(duì)象之間的溝通設(shè)計(jì)機(jī)制,編寫(xiě)代碼。雖然溝通的內(nèi)容屬于業(yè)務(wù)邏輯,但溝通的機(jī)制顯然與業(yè)務(wù)沒(méi)有太大關(guān)系,程序員因此為業(yè)務(wù)邏輯之外的功能浪費(fèi)了時(shí)間。
JSF改變了這種狀況。JSF的事件和偵聽(tīng)模式與大家熟悉的Javabean的事件模式類(lèi)似,有Java基礎(chǔ)的程序員并不需要學(xué)習(xí)任何新的東西。JSF的UI組件可以產(chǎn)生事件,例如,當(dāng)頁(yè)面上一個(gè)文本輸入框的內(nèi)容被修改時(shí),會(huì)發(fā)出一個(gè)“值改變事件”。另一個(gè)對(duì)象如果對(duì)“值改變事件”感興趣,只需注冊(cè)為該對(duì)象的偵聽(tīng)者,并編寫(xiě)處理例程,即可命令JSF在事件發(fā)生時(shí)自動(dòng)調(diào)用處理例程。JSF做了所有該做的事,留給程序員的只有業(yè)務(wù)邏輯代碼的編寫(xiě)。
JSF優(yōu)勢(shì)之三:用戶(hù)界面到業(yè)務(wù)邏輯的直接映射
舉個(gè)例子,表單提交是Web編程最常見(jiàn)的任務(wù),也是最復(fù)雜的任務(wù)之一。當(dāng)用戶(hù)在網(wǎng)頁(yè)上點(diǎn)擊“確定”按鈕時(shí),瀏覽器將生成一個(gè)HTTP請(qǐng)求,發(fā)往服務(wù)器端的某個(gè)Servlet,執(zhí)行該Servlet的service方法。在service方法中,HTTP請(qǐng)求需要經(jīng)歷解碼、類(lèi)型轉(zhuǎn)換、有效性驗(yàn)證、狀態(tài)保存、數(shù)據(jù)更新等環(huán)節(jié),處理這些環(huán)節(jié)的所有細(xì)節(jié),對(duì)程序員來(lái)說(shuō)是沉重的負(fù)擔(dān)。
在JSF下,這些工作的很大一部分都由框架承擔(dān)了,在程序員看來(lái),這個(gè)過(guò)程是透明的,用戶(hù)界面端的HTTP請(qǐng)求可以直接映射到后端的一個(gè)事件處理例程,JSF起到了承前啟后的作用。
【編輯推薦】