JSF和Facelets學習筆記html
1. 什麼是JSF?服務器
JavaServer Faces (JSF) 是一種用於構建Java Web 應用程序的標準框架(是Java Community Process 規定的JSR-127標準)。它提供了一種以組件爲中心的用戶界面框架
(UI)構建方法,從而簡化了Java服務器端應用程序的開發。因爲由Java Community Process (JCP) 推進,屬於Java EE 5中的技術規範,而受到了廠商的普遍支持。它是佈局
一種頁面表示技術。post
JSF用「組件」來組織視圖,以組件爲中心,例如數據表格組件,面板組件等等;學習
引入了基於組件和事件驅動的開發模式,使開發人員可使用相似於處理傳統界面的方式來開發Web應用程序。提供了行爲與表達的清晰分離。 不用特別的腳本語言或者ui
標記語言來鏈接UI組件和Web層。JSF技術API被直接分層在Servlet API的頂端。 技術爲管理組件狀態提供一個豐富的體系機構、處理組件數據、確認用戶輸入和操做事件。spa
JSF框架實際使用的不多,並且在國內相對不太流行,由於每次請求都要在服務器端重建視圖綁定參數值,因此效率比較慢,而優勢是組件豐富,著名的實現例子就有.net
MyFaces。3d
2. JSF的生命週期
對於生命週期的執行,全部的操做都歸結到Lifecycle這個接口。接口包括了兩個主要的方法:
public abstract void execute(FacesContext context) throws FacesException和public abstract void render(FacesContext context) throws FacesException;前者是用來執行各個生命週期的階段,也就是除了render以外的其餘五個階段,並且是按照相應的順序執行。而render,是執行最後一個階段,展現頁 面。可能有人不太理解,爲何不把兩個方法合併成一個方法,剛開始,我也是這麼認爲。既然已經定義了相應的Phase,何須要把最後的render過程分 離出來。看了sun 的RI實現類,發如今render以前須要進行context.getResponseComplete()判斷,可能規範中,認爲render是必需要 執行的階段,其餘的階段能夠跳過,因此分離了相應的方法,同時在執行前,爲了不重複輸出,須要對render過程進行特殊的處理。
JSF的運行大體分爲6個階段,以下圖所示:
3. 關於六個階段的說明
4. 什麼是Facelets?
Facelets 是一種以 JSF 爲中心的視圖技術。
Facelets 以組合爲基礎。一個組合定義一個 Facelets 頁中的 JSF UIComponent 結構。Facelets 應用程序能夠包含多個組合,這些組合在不一樣的 Facelets 頁中定義、做爲一個應用程序運行。
Facelets 是一種相似 Tiles 的模板化框架。與 Tiles 相比,Facelets 的優點在於它預先集成了 JSF UIComponent,而且不須要 Facelets 配置文件,而 Tiles 須要 Tiles 配置文件。 在 Facelets 中能夠添加 JSF 驗證器和轉換器。Facelets 全面支持表達式語言 (EL) 和 JavaServer Pages Standard Tag Library (JSTL)。在 Web 應用程序中使用 Facelets 的部分好處包括模板化、重用和易於開發。
默認狀況下,Facelets 頁爲 XHTML 頁。Facelets 應用程序由如下配置文件和模板文件組成。
模板文件定義 Facelets 中的佈局,包含 <ui:insert/> 標記,用於指定使用模板定義 UIComponent 的 Facelets 組合的結構。
JSF 配置文件是惟一須要的配置文件;不須要 Facelets 配置文件。一個 Facelets 頁是一個 XHTML 頁,包括 Facelets 命名空間中定義的標記。
摘自:https://blog.csdn.net/cheayu/article/details/4426929
https://wenku.baidu.com/view/13d0045b80eb6294dc886c4f.html