JSF簡單入門


1、什么是JSF
        JavaServer Faces (JSF) 是一種用於構建 Web 應用程序的新標准 Java 框架。它提供了一種以組件為中心來開發 Java Web 用戶界面的方法,從而簡化了開發。
        JavaServer Faces於2004年三月1.0版正式提出,清楚的將Web應用程序的開發者划分了三個角色:網頁設計人員、應用程序設計人員以及UI組件開發人員。 從使用的角度來看,網頁設計人員與應用程序設計人員可以他們所熟悉的方式開發程序,而不用侵入彼此的工作范圍,而UI組件開發人員可以獨立的開發個別組件,細節的部份留給了他們來處理。
        JSF 還通過將良好構建的模型-視圖-控制器 (MVC) 設計模式集成到它的體系結構中,確保了應用程序具有更高的可維護性。
        由於 JSF 是通過 Java Community Process (JCP) 開發的一種 Java 標准,因此開發工具供應商完全能夠為 JavaServer Faces 提供易於使用的、高效的可視化開發環境。
2、JSF的體系
        JSF 的主要優勢之一就是它既是 Java Web 應用程序的用戶界面標准又是嚴格遵循模型-視圖-控制器 (MVC) 設計模式的框架。用戶界面代碼(視圖)與應用程序數據和邏輯(模型)的清晰分離使 JSF 應用程序更易於管理。為了准備提供頁面對應用程序數據訪問的 JSF 上下文和防止對頁面未授權或不正確的訪問,所有與應用程序的用戶交互均由一個前端FacesServlet(控制器)來處理。
                                                                         

 

3、JSF的生命周期

        FacesServlet 充當用戶和 JSF 應用程序之間的紐帶。它在明確限定的 JSF 生命周期(規定了用戶請求之間的整個事件流)的范圍內工作。

        a.當JSF頁面上的一個事件發生時(比如:用戶單擊了一個按鈕),事件通知通過HTTP發往服務器。服務器端使用FacesServet這個特殊的Servlet處理該通知。
        b.FacesServlet一接收到用戶的請求就創建一個FacesContext對象(JSF上下文,它存放了應用程序的所有數據)。在處理過程中,主要修改的就是這個FaceContext對象。
        c.接着就是處理過程,處理器是一個叫作Lifecycle的對象。FacesServet把控制權轉交給Lifecycle對象。該對象分6個階段來處理FacesContext對象以生成響應,最后將響應發回客戶端。
        Lifecycle對象處理JSP請求所需要的一系列動作稱為請求處理生命周期。過程狀態圖如下:
                                                    (圖片轉自網絡)

 

       由於請求處理生命周期里的應用請求值、處理驗證、更新模型值和調用應用程序等階段都可以在當前的請求對應的FacesContext實例中添加事件,因此,JSF實現必須在這些階段后處理這些事件。
       恢復視圖:為選定的視圖找到或創建組件樹。一旦用戶單擊JSP頁面上的鏈接或按鈕,就會啟動此階段。JSF應用里的JSP頁面被表示成一個組件樹。JSF實現會進一步將這些組件鏈接到事件處理程序和驗證程序,並將視圖保存在FacesContext對象中,以備后面的處理過程所用。FacesContext對象包含了JSF用來管理當前會話中當前請求的GUI組件狀態所需要的所有狀態信息。
        應用請求值:使用請求中發送來的值來更新組件樹的組件值。因為請求中發送來的值都是String類型的,所以在更新組件樹的組件值之前,必須將這些值轉換為相應類型。這個過程也是解碼。若轉換有錯誤,這些錯誤將添加到FacesContext對象。
        處理驗證:當每個組件的本地值被更新后,Lifecycle對象都會根據這些注冊組件的驗證規則來驗證這些值的合法性。如果輸入的值不符合驗證規則,就會將驗證錯誤添加至FacesContext對象,並將組件標記為無效。JSF將轉至呈現響應階段,並顯示帶有驗證錯誤消息的視圖。如果沒有遇到驗證錯誤,JSF將進入下一階段。
        更新模型值:更新與組件相關的后台bean(也叫管理bean)或者模型對象的值。只有那些與組件值綁定在一起的Bean屬性才會被更新。
        調用應用程序:JSF控制器調用應用程序來處理應用程序級的事件,如提交一個表單。(此階段可執行業務邏輯)
        呈現響應:使用當前的顯示技術(如JSP)顯示選定的視圖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM