簡(jiǎn)介JSF
?
Web應(yīng)用程序的開(kāi)發(fā)與傳統(tǒng)的單機(jī)程序開(kāi)發(fā)在本質(zhì)上存在著太多的差異,Web應(yīng)用程序開(kāi)發(fā)人員至今不可避免的必須處理HTTP的細(xì)節(jié),而HTTP無(wú)狀態(tài)的 (stateless)本質(zhì),與傳統(tǒng)應(yīng)用程序必須維持程序運(yùn)行過(guò)程中的信息有明顯的違背,再則Web應(yīng)用程序面對(duì)網(wǎng)站上不同的使用者同時(shí)的存取,其執(zhí)行緒 安全問(wèn)題以及資料驗(yàn)證、轉(zhuǎn)換處理等問(wèn)題,又是復(fù)雜且難以解決的。
另一方面,本質(zhì)上是靜態(tài)的HTML與本質(zhì)上是動(dòng)態(tài)的應(yīng)用程序又是一項(xiàng)違背,這造成不可避免的,處理網(wǎng)頁(yè)設(shè)計(jì)的美術(shù)人員與程序設(shè)計(jì)人員,必須被彼 此加入至視圖組件中的邏輯互相干擾,即便一些視圖呈現(xiàn)邏輯以卷標(biāo)的方式呈現(xiàn),試圖展現(xiàn)對(duì)網(wǎng)頁(yè)設(shè)計(jì)美術(shù)人員的親切,但它終究必須牽涉到相關(guān)的流程邏輯。
有很多方案試著解決種種的困境,而各自的著眼點(diǎn)各不相同,有的從程序設(shè)計(jì)人員的角度來(lái)解決,有的從網(wǎng)頁(yè)設(shè)計(jì)人員的角度來(lái)解決,各種的框架被提 出,所造成的是各種不統(tǒng)一的標(biāo)簽與框架,為了促進(jìn)產(chǎn)能的整合開(kāi)發(fā)環(huán)境(IDE)難以整合這些標(biāo)簽與框架,另一方面,開(kāi)發(fā)人員的學(xué)習(xí)負(fù)擔(dān)也不斷的加重,他們 必須一人了解多個(gè)角色的工作。
JavaServer Faces
的提出在試圖解決這個(gè)問(wèn)題,它試圖在不同的角度上提供網(wǎng)頁(yè)設(shè)計(jì)人員、應(yīng)用程序設(shè)計(jì)人員、組件開(kāi)發(fā)人員解決方案,讓不同技術(shù)的人員可以彼此合作又不互相干擾,它綜合了各家廠商現(xiàn)有的技術(shù)特點(diǎn),由Java Community Process(JCP)團(tuán)隊(duì)研擬出來(lái)的一套標(biāo)準(zhǔn),并在2004年三月發(fā)表了JavaServer Faces 1.0實(shí)作成果。
從網(wǎng)頁(yè)設(shè)計(jì)人員的角度來(lái)看,JavaServer Faces提供了一套像是新版本的HTML標(biāo)簽,但它不是靜態(tài)的,而是動(dòng)態(tài)的,可以與后端的動(dòng)態(tài)程序結(jié)合,但網(wǎng)頁(yè)設(shè)計(jì)人員不需要理會(huì)后端的動(dòng)態(tài)部份,網(wǎng)頁(yè) 設(shè)計(jì)人員甚至不太需要接觸JSTL這類(lèi)的卷標(biāo),也可以動(dòng)態(tài)的展現(xiàn)數(shù)據(jù)(像是動(dòng)態(tài)的查詢(xún)表格內(nèi)容),JavaServer Faces提供標(biāo)準(zhǔn)的標(biāo)簽,這可以與網(wǎng)頁(yè)編輯程序結(jié)合在一起,另一方面,JavaServer Faces也允許您自訂標(biāo)簽。
從應(yīng)用程序設(shè)計(jì)人員的角度來(lái)看,JavaServer Faces提供一個(gè)與傳統(tǒng)應(yīng)用程序開(kāi)發(fā)相類(lèi)似的模型(當(dāng)然因某些本質(zhì)上的差異,模型還是稍有不同),他們可以基于事件驅(qū)動(dòng)來(lái)開(kāi)發(fā)程序,不必關(guān)切HTTP的 處理細(xì)節(jié),如果必須處理一些視覺(jué)組件的屬性的話,他們也可以直接在整合開(kāi)發(fā)環(huán)境上拖拉這些組件,點(diǎn)選設(shè)定組件的屬性,JavaServer Faces甚至還為應(yīng)用程序設(shè)計(jì)人員處理了對(duì)象與字符串(HTTP傳送本質(zhì)上就是字符串)間不匹配的轉(zhuǎn)換問(wèn)題。
從UI組件開(kāi)發(fā)人員的角度來(lái)看,他們可以設(shè)計(jì)通用的UI組件,讓?xiě)?yīng)用程序的開(kāi)發(fā)產(chǎn)能提高,就如同在設(shè)計(jì)Swing組件等,UI開(kāi)發(fā)人員可以獨(dú)立開(kāi)發(fā),只要定義好相關(guān)的屬性選項(xiàng)來(lái)調(diào)整細(xì)節(jié),而不用受到網(wǎng)頁(yè)設(shè)計(jì)人員或應(yīng)用程序設(shè)計(jì)人員的干擾。
三個(gè)角色的知識(shí)領(lǐng)域原則上可以互不干擾,根據(jù)您的角色,您只要了解其中一個(gè)知識(shí)領(lǐng)域,就可以運(yùn)用JavaServer Faces,其它角色的知識(shí)領(lǐng)域您可以不用了解太多細(xì)節(jié)。
當(dāng)然,就其中一個(gè)角色單獨(dú)來(lái)看,JavaServer Faces隱藏了許多細(xì)節(jié),若要全盤(pán)了解,其實(shí)JavaServer Faces是復(fù)雜的,每一個(gè)處理的環(huán)境都值得深入探討,所以學(xué)習(xí)JavaServer Faces時(shí),您要選擇的是通盤(pán)了解,還是從使用的角度來(lái)了解,這就決定了您學(xué)習(xí)時(shí)所要花費(fèi)的心力。
要使用JSF,首先您要先取得JavaServer Faces參考實(shí)作(JavaServer Faces Reference Implementation),在將來(lái),JSF會(huì)與Container整合在一起,屆時(shí)您只要下載支持的Container,就可以使用JSF的功能。
請(qǐng)至 JSF 官方網(wǎng)站的
下載區(qū)
下載參考實(shí)作,在下載壓縮檔并解壓縮之后,將其 lib 目錄下的 jar 檔案復(fù)制至您的Web應(yīng)用程序的/WEB-INF/lib目錄下,另外您還需要 jstl.jar 與 standard.jar 檔案,這些檔案您可以在 sample 目錄下,解壓縮當(dāng)中的一個(gè)范例,在它的/WEB-INF/lib目錄下找到,將之一并復(fù)制至您的Web應(yīng)用程序的/WEB-INF/lib目錄下,您總共需要以下的檔案:
* jsf-impl.jar * jsf-api.jar * commons-digester.jar * commons-collections.jar * commons-beanutils.jar * jstl.jar * standard.jar
接下來(lái)配置Web應(yīng)用程序的web.xml,使用JSF時(shí),所有的請(qǐng)求都透過(guò)FacesServlet來(lái)處理,您可以如下定義:
?
- web.xml
?
web.xml
?
<?xml version="1.0" encoding="ISO-8859-1" ?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4" > <description> JSF Demo </description> <display-name>JSF Demo</display-name> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class> javax.faces.webapp.FacesServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>?
?
在上面的定義中,我們將所有.faces的請(qǐng)求交由FaceServlet來(lái)處理,F(xiàn)aceServlet會(huì)喚起相對(duì)的.jsp網(wǎng)頁(yè),例如請(qǐng)求是/index.faces的話,則實(shí)際上會(huì)喚起/index.jsp網(wǎng)頁(yè),完成以上的配置,您就可以開(kāi)始使用JSF了。
?
|
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
