(引用)jsf框架解析

網址:http://www.cnblogs.com/linzheng/archive/2011/01/04/1925896.htmlhtml

 

JSF 體系結構:前端

JSF 的主要優點之一就是它既是 Java Web 應用程序的用戶界面標準又是嚴格遵循模型-視圖-控制器 (MVC) 設計模式的框架。用戶界面代碼(視圖)與應用程序數據和邏輯(模型)的清晰分離使 JSF 應用程序更易於管理。爲了準備提供頁面對應用程序數據訪問的 JSF 上下文和防止對頁面未受權或不正確的訪問,全部與應用程序的用戶交互均由一個前端FacesServlet(控制器)來處理。
 
JSF  生命週期:
FacesServlet 充當用戶和 JSF 應用程序之間的紐帶。它在明確限定的  JSF 生命週期(規定了用戶請求之間的整個事件流)的範圍內工做。
1.   當JSF頁面上的一個事件發生時(好比:用戶單擊了一個按鈕),事件通知經過HTTP發往服務器。服務器端使用FacesServet這個特殊的Servlet處理該通知。
2.   FacesServlet一接收到用戶的請求就建立一個FacesContext對象(JSF上下文,它存放了應用程序的全部數據)。在處理過程當中,主要修改的就是這個FaceContext對象。
3.   接着就是處理過程,處理器是一個叫做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)顯示選定的視圖。

 

一個jsf的實例java

配置文件設計模式

/JSFLoginDemo/WebRoot/WEB-INF/faces-config.xml服務器

代碼

 

 

前端頁面框架

/JSFLoginDemo/WebRoot/login.jspjsp

代碼

 

後臺代碼spa

/JSFLoginDemo/src/com/qdu/sun/jsf/LoginBean.java設計

代碼
相關文章
相關標籤/搜索