首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

JSF 整體架構深度解析:核心包結構與關鍵類別

     編輯:J2EE

JSF vs Struts 核心差異

  • 請求處理:事件驅動取代 Request 分派
  • 頁面展示:組件模型取代散落 HTML 標籤
  • 生命週期:細分階段,各階段可派發事件
  • 頁面流轉:Navigation 系統處理

核心包結構 (javax.faces.*)

1. application 包

  • Application:核心進入點,連接各模組,工廠模式建立實作
  • ViewHandler:View 與 Renderer 調度,Facelets 即自訂實作
  • NavigationHandler:頁面導航處理
  • StateManager:View 狀態儲存/恢復(Session/Client 模式)

2. context 包

  • FacesContext:請求範圍上下文,管理 Message、Application 參考、ResponseWriter
  • ExternalContext:封裝 ServletContext/PortletContext
  • ResponseWriter:伺服器端輸出 HTML/XML,所有 Renderer 依賴

3. lifecycle 包

  • Lifecycle:管理 6 大階段執行順序
  • LifecycleFactory:工廠建立實作

4. webapp 包

  • FacesServlet:唯一入口 Servlet,轉換請求、調用 Lifecycle
  • 初始化工作由實作類(如 RI 的 ConfigureListener)完成

5. component 包

組件介面體系:

JSF 組件介面類別圖
  • StateHolder:狀態保持,實作 saveState/restoreState
  • ValueHolder:本地值支援、模型資料存取、轉換
  • EditableValueHolder:可編輯值組件
  • ActionSource/ActionSource2:動作事件源,支援 MethodExpression
  • NamingContainer:標記容器組件(如 dataTable、form)

6. convert / validator 包

  • 轉換器:頁面值與模型類型雙向轉換
  • 驗證器:伺服器端驗證,客戶端驗證需搭配 AJAX 實現

7. event 包

事件體系相對簡單,預設以單一 ActionListener 委派所有客戶端動作,多使用 MethodExpression 綁定。

8. model / render 包

  • model:增強 DataTable、SelectItems 支援
  • render:RenderKit/Renderer 抽象,RenderKitFactory 管理,ResponseStateManager 協助狀態操作

總結

JSF 規範架構清晰分層,但實作眾多(Mojarra、MyFaces、PrimeFaces 等)且相容性參差不齊,導致生態系複雜。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved