1. 程式人生 > >Java EE開發技術課程第六周(jsf、facelets)

Java EE開發技術課程第六周(jsf、facelets)

AS 本地 5.1 腳本 可擴展性 ava 使用 成功 響應

1、jsf(java sever faces)

  1.1 jsf的定義:

    jsf是一種用於構建java web應用程序的框架。它提供了一種以組件為中心的用戶界面(UI)構建方法,從而簡化了Java服務器端應用程序的開發。

  1.2 主要組件:

    為了展現UI組件和管理它們的狀態,操作事件、服務器端的確認和數據變換;定義頁面導航;支持國際化和可訪問性;提供對所有特性的可擴展性的API為了在JSP中表示UI組件和拍發組件給服務器端對象的兩個JSP自定義tag庫。

  1.3 技術優點:

    引入了基於組件和事件驅動的開發模式,使開發人員可以使用類似於處理傳統界面的方式來開發Web應用程序。提供了行為與表達的清晰分離。 不用特別的腳本語言或者標記語言來連接UI組件和Web層。JSF技術API被直接分層在Servlet API的頂端。 技術為管理組件狀態提供一個豐富的體系機構、處理組件數據、確認用戶輸入和操作事件。

  1.4 工作方式: 

    jsf應用是事件驅動的,當一個事件發生時(比如用戶單擊一個按鈕),事件通知通過HTTP發往服務器,服務器端使用叫做FacesServlet的特殊servlet處理該通知,web容器裏每一個jsf應用都有它自己的FacesServlet;

在後臺,每一個jsf請求都觸發了3件事情:

      1.4.1 FacesServlet創建FacesContext(該對象中包含Web容器傳給FacesServlet的service方法的ServletContext,ServletRequest,ServletRespons對象,在處理過程中主要就是修改這個FacesContext)

      1.4.2 FacesServlet把控制權交給Lifecycle

      1.4.3 Lifecycle分6個階段處理FacesContext(也即jsf生命周期過程)

  1.5 生命周期:

    1.5.1. 重建視圖: 建立組件樹,如果是首次渲染,則組件樹被重置合適的狀態;如果不是首次渲染,則組件樹被創建跳到響應階段(JSF的組件樹結構和DOM是一樣的,只不過後者是client前者是server)。

    1.5.2. 應用請求值: 樹中的每個組件都能從請求參數中提取到新的值,並把值存儲本地,之後處理所有與組件相關的事件進入隊列,如果某個組件的immediate屬性設置為true,那麽驗證,轉換,以及與組件關聯的事件在這個階段被處理.

    1.5.3. 處理驗證: 組件值轉換成與之相對應的數據類型。如果轉換失敗,這一階段將繼續完成所有剩余的轉換器,驗證和運行所需的檢查,但在完成後,跳轉到生命周期的Render Response階段。如果驗證成功,則檢查組件上的required 的屬性。如果該屬性是必須的並且組件中輸入了值,那麽與之相關的驗證程序運行。如果required的屬性是必須但又沒有輸入值,這一階段完成(所有剩余驗證程序還會繼續執行),然後生命周期跳躍到Render Response階段。如果required 屬性標識為false,不管組件中有沒有輸入值,驗證過程都不會運行。

    1.5.4. 更新模型: 驗證組件的本地值移動到模型中,同時本地副本被丟棄。

    1.5.5. 調用應用程序: 執行應用級邏輯(如事件處理程序)。

    1.5.6. 呈現響應: 呈現樹中的組件。後續請求和Restore View階段保存狀態信息。

2、facelets 

  Facelets是一種輕量級的頁面聲明語言,用於使用HTML樣式構建JSF(JavaServer Faces)視圖。

它包括以下功能:

  • 它使用XHTML創建網頁。
  • 除了支持JavaServer Faces和JSTL標記庫之外,它還支持Facelets標簽庫。
  • 它支持表達語言(EL)。
  • 它是使用組件和頁面的模板。

優點

  • 它通過模板和復合組件支持代碼可重用性。
  • 它通過定制提供組件和其他服務器端對象的功能可擴展性。
  • 編譯時間更快
  • 它在編譯時驗證表達式語言。
  • 高性能渲染能力。

JSF(JavaServer Faces)技術支持各種標簽庫,以將組件添加到網頁。 為了支持JavaServer Faces標簽庫機制,Facelets使用XML命名空間聲明。

下表顯示了Facelets支持的標簽庫。

參考鏈接:https://baike.baidu.com/item/jsf/442519?fr=aladdin

     http://www.cnblogs.com/zgq0/p/8849106.html

Java EE開發技術課程第六周(jsf、facelets)