JSF的技術(shù)與組件
JSF是由Java Community Process (JCP)制定的一個(gè)Web應(yīng)用框架標(biāo)準(zhǔn)。JSF具有良好定義的請(qǐng)求處理生命周期和豐富的組件層次結(jié)構(gòu),旨在推動(dòng)基于Java的Web用戶界面開發(fā)的簡易性。利用JSF提供的可重用、可擴(kuò)展、基于組件的用戶界面框架,在快速開發(fā)工具RAD的支持下,可以通過拖放組件的方式對(duì)Web用戶界面進(jìn)行可視化編輯,將用戶界面上的組件與一個(gè)數(shù)據(jù)源綁定,并將客戶端用戶界面產(chǎn)生的事件交給服務(wù)器端處理,從而大大降低基于Java的Web用戶界面的開發(fā)難度,提高開發(fā)效率。
JSF的主要優(yōu)勢(shì)之一就是它既是Java Web用戶界面標(biāo)準(zhǔn)又是嚴(yán)格遵循模型-視圖-控制器 (MVC) 設(shè)計(jì)模式的框架。用戶界面代碼(視圖)與應(yīng)用程序數(shù)據(jù)和邏輯(模型)的清晰分離使JSF應(yīng)用程序更易于管理。為了準(zhǔn)備提供頁面對(duì)應(yīng)用程序數(shù)據(jù)訪問的JSF 上下文和防止對(duì)頁面未授權(quán)或不正確的訪問,所有與應(yīng)用程序的用戶交互均由一個(gè)前端“Faces”servlet(控制器)來處理。 JSF技術(shù)做到了應(yīng)用程序邏輯和表示的完全分離,是真正徹底的MVC模式。
JSF是構(gòu)建Web應(yīng)用程序的新標(biāo)準(zhǔn)Java框架,可以依據(jù)JSF的框架標(biāo)準(zhǔn)手工書寫Web應(yīng)用程序,以文本方式像寫HTML或JSP程序一樣實(shí)現(xiàn)Web用戶界面的設(shè)計(jì);同時(shí)在開發(fā)、運(yùn)行以及調(diào)試前還需要搭建系統(tǒng)運(yùn)行平臺(tái)。
這樣做的缺點(diǎn)是不能充分體現(xiàn)可視化開發(fā)的便捷和高效,一般是在分析Web應(yīng)用程序的結(jié)構(gòu)時(shí)使用。
(1)視圖設(shè)計(jì)
方便、快捷地開發(fā)基于JSF的Web應(yīng)用程序,是在JSF提供了一組豐富的、可重用的服務(wù)器端用戶界面組件的條件下實(shí)現(xiàn)的。在開發(fā)工具的支持下,用戶可以很容易地在可視化環(huán)境中利用這些組件構(gòu)建Web用戶界面,處理組件的數(shù)據(jù)校驗(yàn)、事件處理等用戶界面管理問題。
設(shè)計(jì)每個(gè)需要的JSP頁面,在頁面中放置JSF的內(nèi)置組件,并將組件與應(yīng)用層的JavaBean綁定。利用RAD工具能通過拖放組件的方式輕松實(shí)現(xiàn)頁面文件,不需要手寫大量代碼。開發(fā)工具自動(dòng)生成頁面對(duì)應(yīng)的java文件,在文件中定義好了頁面的JSF組件及其getter、setter方法以及JSF組件的“action”屬性對(duì)應(yīng)的方法等。程序員可以方便地在已有程序的基礎(chǔ)上修改、調(diào)試。
(2)模型設(shè)計(jì)
JSF技術(shù)做到了應(yīng)用程序邏輯和表示的完全分離。在模型設(shè)計(jì)部分,程序員只需要考慮程序的邏輯功能,不需要考慮數(shù)據(jù)的表現(xiàn)形式。JSF模型是通過JavaBean程序來實(shí)現(xiàn)的。
JSF模型是根據(jù)頁面中組件需要處理的業(yè)務(wù)邏輯而設(shè)計(jì)實(shí)現(xiàn)的。在JSF中使用JavaBean可以直接在JSF頁面中聲明或者在配置文件faces-config. xml中聲明。
如果手工部署應(yīng)用,則編譯完成的JavaBean文件應(yīng)放到Web應(yīng)用程序的WEB- INF\classes目錄下(TOMCAT環(huán)境下);如果借助于RAD開發(fā)工具,設(shè)計(jì)人員就不需要考慮部署的細(xì)節(jié),開發(fā)工具會(huì)自動(dòng)把實(shí)現(xiàn)了業(yè)務(wù)邏輯的 JavaBean文件(未編譯的java文件和編譯成功后的jar包)成功地部署在相關(guān)位置。
(3)控制器設(shè)計(jì)
JSF的控制器設(shè)計(jì)是在配置文件中完成的,相關(guān)的主要有兩個(gè)文件:web.xml文件和faces- config.xml文件(均在WEB-INF目錄下)。web.xml文件主要用于控制JSF的生命周期,實(shí)現(xiàn)部署描述符。faces- config.xml文件實(shí)現(xiàn)導(dǎo)航,在文件中控制頁面之間的跳轉(zhuǎn)流程。
配置步驟是首先配置Web應(yīng)用程序的web.xml文件,然后是配置JSF的控制文件faces-config.xml文件。這兩個(gè)文件格式固定,在IDE環(huán)境中這個(gè)過程由工具自動(dòng)完成,不需要設(shè)計(jì)人員的干預(yù),即使手工配置也比較簡單。
JSF技術(shù)重點(diǎn)在View部分,它實(shí)現(xiàn)了Web應(yīng)用程序設(shè)計(jì)角色的完全分離。JSF網(wǎng)頁設(shè)計(jì)者只需要專注于頁面的設(shè)計(jì);應(yīng)用程序開發(fā)者主要關(guān)心Model部分的JavaBean的開發(fā);程序的流程控制則由faces-config.xml專門配置。
總結(jié)
JSF是基于Java 的Web 應(yīng)用開發(fā)領(lǐng)域里提供了一個(gè)可重用、可擴(kuò)展、基于組件、工具友好的服務(wù)器端UI 框架。在支持JSF 的RAD開發(fā)工具中,人們可以像使用Visual Studio. NET一樣方便快捷地構(gòu)建Web 用戶界面,大大降低了利用Java技術(shù)實(shí)現(xiàn)Web 用戶界面的難度,提高了開發(fā)效率。
JSF具有強(qiáng)大的組件體系和事件處理系統(tǒng),完全實(shí)現(xiàn)了MVC模式的應(yīng)用架構(gòu),使得基于Java的Web用戶界面程序開發(fā)難度大大降低,提高了開發(fā)效率,非常適用于Web頁面的開發(fā)。
JSF是一個(gè)開放的標(biāo)準(zhǔn),具有很好的可擴(kuò)展性。依照J(rèn)SF 的規(guī)范,用戶完全可以根據(jù)需求定制自己的用戶界面組件、事件處理器、數(shù)據(jù)校驗(yàn)和轉(zhuǎn)換組件等,這些組件和標(biāo)準(zhǔn)的JSF組件一樣是可重用的。JSF API 是直接架構(gòu)在Servlet API 之上的,因此JSF 用戶界面組件的呈現(xiàn)并不局限于特定的腳本技術(shù)或標(biāo)記語言。表示層完全可以采用JSP 之外的技術(shù)。
在眾多的J2EE表現(xiàn)層框架技術(shù)中,JSF表現(xiàn)出其旺盛的生命力。盡管JSF技術(shù)還有不少問題,但隨著JSF技術(shù)的不斷成熟和版本更新,其必將獲得越來越多的應(yīng)用。
JSF框架搭建(MyEclipse)(實(shí)現(xiàn)用戶登錄)
1.新建一個(gè)web project,選擇Java EE 5.0選項(xiàng),輸入項(xiàng)目名稱:JSFLoginDemo(例),點(diǎn)擊完成。
2.菜單中選擇MyEclipse,Project Capabilities--->Add JSF Capabilities,點(diǎn)擊完成。
3.src下新建一個(gè)資源文件,命名Messages.properties(用處:做顯示的國際化),寫入
login_label=Please Login:
login_label=User name:
4.src下建個(gè)包,包名為com.jsfdemo
5.添加受管Bean(New Managed Bean),命名UserBean,Class:com.jsfdemo.UserBean,Scope:session,添加 userName,Property Kind:Simple,Class:java.lang.String,完成。再添加password,Property Kind:Simple,Class:java.lang.String,完成。下面兩項(xiàng)打鉤----->Next---->finish, 檢查配置信息。
【編輯推薦】