簡介JSF
?
Web應用程序的開發與傳統的單機程序開發在本質上存在著太多的差異,Web應用程序開發人員至今不可避免的必須處理HTTP的細節,而HTTP無狀態的 (stateless)本質,與傳統應用程序必須維持程序運行過程中的信息有明顯的違背,再則Web應用程序面對網站上不同的使用者同時的存取,其執行緒 安全問題以及資料驗證、轉換處理等問題,又是復雜且難以解決的。
另一方面,本質上是靜態的HTML與本質上是動態的應用程序又是一項違背,這造成不可避免的,處理網頁設計的美術人員與程序設計人員,必須被彼 此加入至視圖組件中的邏輯互相干擾,即便一些視圖呈現邏輯以卷標的方式呈現,試圖展現對網頁設計美術人員的親切,但它終究必須牽涉到相關的流程邏輯。
有很多方案試著解決種種的困境,而各自的著眼點各不相同,有的從程序設計人員的角度來解決,有的從網頁設計人員的角度來解決,各種的框架被提 出,所造成的是各種不統一的標簽與框架,為了促進產能的整合開發環境(IDE)難以整合這些標簽與框架,另一方面,開發人員的學習負擔也不斷的加重,他們 必須一人了解多個角色的工作。
JavaServer Faces
的提出在試圖解決這個問題,它試圖在不同的角度上提供網頁設計人員、應用程序設計人員、組件開發人員解決方案,讓不同技術的人員可以彼此合作又不互相干擾,它綜合了各家廠商現有的技術特點,由Java Community Process(JCP)團隊研擬出來的一套標準,并在2004年三月發表了JavaServer Faces 1.0實作成果。
從網頁設計人員的角度來看,JavaServer Faces提供了一套像是新版本的HTML標簽,但它不是靜態的,而是動態的,可以與后端的動態程序結合,但網頁設計人員不需要理會后端的動態部份,網頁 設計人員甚至不太需要接觸JSTL這類的卷標,也可以動態的展現數據(像是動態的查詢表格內容),JavaServer Faces提供標準的標簽,這可以與網頁編輯程序結合在一起,另一方面,JavaServer Faces也允許您自訂標簽。
從應用程序設計人員的角度來看,JavaServer Faces提供一個與傳統應用程序開發相類似的模型(當然因某些本質上的差異,模型還是稍有不同),他們可以基于事件驅動來開發程序,不必關切HTTP的 處理細節,如果必須處理一些視覺組件的屬性的話,他們也可以直接在整合開發環境上拖拉這些組件,點選設定組件的屬性,JavaServer Faces甚至還為應用程序設計人員處理了對象與字符串(HTTP傳送本質上就是字符串)間不匹配的轉換問題。
從UI組件開發人員的角度來看,他們可以設計通用的UI組件,讓應用程序的開發產能提高,就如同在設計Swing組件等,UI開發人員可以獨立開發,只要定義好相關的屬性選項來調整細節,而不用受到網頁設計人員或應用程序設計人員的干擾。
三個角色的知識領域原則上可以互不干擾,根據您的角色,您只要了解其中一個知識領域,就可以運用JavaServer Faces,其它角色的知識領域您可以不用了解太多細節。
當然,就其中一個角色單獨來看,JavaServer Faces隱藏了許多細節,若要全盤了解,其實JavaServer Faces是復雜的,每一個處理的環境都值得深入探討,所以學習JavaServer Faces時,您要選擇的是通盤了解,還是從使用的角度來了解,這就決定了您學習時所要花費的心力。
要使用JSF,首先您要先取得JavaServer Faces參考實作(JavaServer Faces Reference Implementation),在將來,JSF會與Container整合在一起,屆時您只要下載支持的Container,就可以使用JSF的功能。
請至 JSF 官方網站的
下載區
下載參考實作,在下載壓縮檔并解壓縮之后,將其 lib 目錄下的 jar 檔案復制至您的Web應用程序的/WEB-INF/lib目錄下,另外您還需要 jstl.jar 與 standard.jar 檔案,這些檔案您可以在 sample 目錄下,解壓縮當中的一個范例,在它的/WEB-INF/lib目錄下找到,將之一并復制至您的Web應用程序的/WEB-INF/lib目錄下,您總共需要以下的檔案:
* jsf-impl.jar * jsf-api.jar * commons-digester.jar * commons-collections.jar * commons-beanutils.jar * jstl.jar * standard.jar
接下來配置Web應用程序的web.xml,使用JSF時,所有的請求都透過FacesServlet來處理,您可以如下定義:
?
- 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的請求交由FaceServlet來處理,FaceServlet會喚起相對的.jsp網頁,例如請求是/index.faces的話,則實際上會喚起/index.jsp網頁,完成以上的配置,您就可以開始使用JSF了。
?
|
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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