傳統 JSP 開發將顯示邏輯與業務邏輯混雜,標籤庫雖剝離 Java 程式碼,仍難徹底分離關注點。JavaServer Faces (JSF) 作為 JCP 標準規範 (JSR 127/252),提供組件為中心的伺服器端 UI 框架,配合 RAD 工具實現真正的可視化拖放開發,徹底改變 Java Web 介面建構方式。
FacesServlet 統一處理請求生命週期、導航與轉換/驗證每個 UI 元件由元件類定義行為(狀態、事件、驗證)與渲染器定義輸出(HTML、WML、JSON 等),支援多裝置、多標記語言輸出。
六階段請求處理:Restore View → Apply Request Values → Process Validations → Update Model Values → Invoke Application → Render Response,確保資料流向可預測、可攔截。
faces-config.xml 定義導航規則、Managed Bean、轉換器/驗證器| 廠商 | 產品/專案 | 特色 |
|---|---|---|
| Sun/Oracle | Java Studio Creator / Mojarra (RI) | 參考實作、標準相容性最高 |
| IBM | WebSphere Studio / JSF Widget Library | 企業級元件庫、RAD 深度整合 |
| Oracle | ADF Faces / JDeveloper | 豐富商業元件、SOA 整合 |
| 開源社群 | MyFaces、PrimeFaces、RichFaces、IceFaces | 元件生態最豐富、社群活躍 |
JSF 1.2 隨 Java EE 5 發布,整合 JSP 2.1 EL 表達式語言、支援 Facelets、強化 AJAX 整合。JSF 2.0 (Java EE 6) 進一步引入註解配置、專案階段、系統事件、資源庫機制,大幅簡化開發。
JSF 以標準化組件模型、嚴格 MVC、工具友善設計,解決了 Java Web 介面開發長期面臨的複用性、維護性與協作難題。配合成熟的 RAD 工具與豐富元件生態,是建構企業級 Web 應用的優選框架。