JavaEE 第六週

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. 關於六個階段的說明

  • RESTORE_VIEW:查找原有的view ,恢復原有的狀態,若是沒有,則調用ViewHandler.createView,若是爲post操做,則按照順序執行各個階段。不然執行RENDER_RESPONSE階段;
  • APPLY_REQUEST_VALUES:讀取客戶端參數,處理各個組件的processDecodes方法,內部調用decode方法,由Renderer執行decode方法;
  • PROCESS_VALIDATIONS:執行組件的processValidators方法,對於UIInput執行validate方法,用於綁定值,調用convert,和validate;
  • UPDATE_MODEL_VALUES:執行組件的processUpdates方法,對於UIViewRoot,執行broadcastEvents和notifyPhaseListeners全部的UIInput,執行updateModel方法;
  • INVOKE_APPLICATION:調 用UIViewRoot.processApplication方法。這一過程主要讀取相應的action配置,若是存在action,則調用 action,也就是調用應用邏輯。在執行完相應的邏輯後,查詢action是否返回值,若是有,由navigationHandler去讀取下一個view id;
  • RENDER_RESPONSE:展現view,調用ViewHandler.renderView,展現view。

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 應用程序由如下配置文件和模板文件組成。 

  • 一個 Facelet 模板文件,這是一個 XHTML 頁
  • Facelet 頁眉和 Facelet 頁腳 XHTML 頁  
  • 一個 JSF 配置文件 faces-config.xml  
  • Facelet 組合頁,也是一個 XHTML 頁

   模板文件定義 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

相關文章
相關標籤/搜索