複製鏈接
請複製以下鏈接發送給好友

JavaServer Faces

鎖定
JavaServer Faces (JSF) 是一種用於構建 Web 應用程序的新標準 Java 框架。它提供了一種以組件為中心來開發 Java Web 用户界面的方法,從而簡化了開發。
中文名
JavaServer Faces
類    別
Web 應用程序
性    質
Java 框架
操    作
計算機,電腦

目錄

JavaServer Faces含義

JavaServer Faces 還引起了廣大 Java/Web 開發人員的興趣。“企業開發人員”和 Web 設計人員將發現 JSF 開發可以簡單到只需將用户界面 (UI) 組件拖放到頁面上,而“系統開發人員”將發現豐富而強健的 JSF API 為他們提供了無與倫比的功能和編程靈活性。JSF 還通過將良好構建的模型-視圖-控制器 (MVC) 設計模式集成到它的體系結構中,確保了應用程序具有更高的可維護性。最後,由於 JSF 是通過 Java Community Process (JCP) 開發的一種 Java 標準,因此開發工具供應商完全能夠為 JavaServer Faces 提供易於使用的、高效的可視化開發環境。

JavaServer Faces體系結構

JavaServer Faces 的 MVC 實現
JSF 的主要優勢之一就是它既是 Java Web 用户界面標準又是嚴格遵循模型-視圖-控制器 (MVC) 設計模式的框架。用户界面代碼(視圖)與應用程序數據和邏輯(模型)的清晰分離使 JSF 應用程序更易於管理。為了準備提供頁面對應用程序數據訪問的 JSF 上下文和防止對頁面未授權或不正確的訪問,所有與應用程序的用户交互均由一個前端“Faces”servlet(控制器)來處理。
JSF 生命週期
Faces Controller servlet 充當用户和 JSF 應用程序之間的紐帶。它在明確限定的 JSF 生命週期(規定了用户請求之間的整個事件流)的範圍內工作。例如,一收到訪問 JSF 應用程序的初始 Web 請求,Faces Controller servlet 便通過首先準備 JSF 上下文(存放所有應用程序數據的一個 Java 對象)來處理請求。然後控制器把用户指引到所請求的頁面。該頁面通常使用簡單的表達式語言來處理來自 JSF 上下文的應用程序數據。一收到後續請求,控制器就更新所有模型數據(假設輸入了新數據)。JSF 開發人員可以通過編程的方式在應用程序運行期間隨時訪問整個 JSF 生命週期,從而可以隨時對應用程序的行為進行高度控制。
JavaServer Faces 的用户界面組件
JavaServer Faces 的真正威力在於它的用户界面組件模型。在該模型中,應用程序完全用組件集合構建,這些組件可以針對多種客户端類型用不同的方式來進行顯示。與其他專有技術(如 ASP,Net)有點類似,JSF 的 UI 組件模型技術使開發人員能夠使用預先構建的用户界面 (UI) 組件來構建 Web 用户界面(而非完全從頭構建用户界面),從而提供了前所未有的開發效率。JSF UI 組件有多種形式,可以簡單到只是顯示文本的 outputLabel,或者複雜到可以表示來自數據集合(如數據庫表)的表格化數據的 dataTable
JavaServer Faces 規範在其參考實施中提供了一組基本 UI 組件,這些組件本身是非常有用的。它們包括兩個組件庫,即“HTML”組件庫 — 它大部分映射了標準的 HTML 輸入元素;以及“核心”庫 — 它輔助常見的應用程序開發任務(如,國際化和驗證/轉換輸入數據)。除了提供一個基本 UI 組件庫之外,JSF API 還提供了擴展和創建定製 JSF UI 組件的功能,從而在基本組件之上提供更多功能。
其他用户界面組件庫
由於 JSF API 的豐富性和靈活性,許多 Java 開發人員開始創建新的 JSF 組件庫和實現。Oracle 的 ADF Faces 是一個完全符合 JSF 規範的組件庫,它為 JSF 應用程序開發提供了一組廣泛的增強 UI 組件。這些組件包括針對每種客户端類型的多種呈現器、高級表格、顏色和日期選擇器以及大量通用組件(如菜單、命令按鈕、轉移選擇器和進度指示計)。
除了 Oracle 的 ADF Faces 之外,還有其他新的 JSF 組件庫開始從開放源代碼社區和軟件供應商社區中出現。MyFaces 就是一個新 JSF UI 組件庫的例子,它通過 Apache 作為一個開放源代碼項目提供的。Myfaces 還是對 JSF 基本 UI 組件的增強,它擁有更廣泛的 UI 功能,如集成的 Tiles 支持、支持 Javascript 的菜單和樹控件。
JSF UI 組件的可插入呈現技術
JSF UI 組件技術最引人注目一個方面就是它的可插入呈現功能。JSF UI 組件能夠根據查看組件的客户端的類型來以不同方式呈現自身。例如,HTML 瀏覽器將看到特定 UI 組件的“HTML 瀏覽器友好”版本,而支持無線或 WAP 的微型設備將看到同一 UI 組件的“WML 友好”版本!JSF 通過解除 UI 組件與其呈現邏輯之間的耦合從而能夠為同一 UI 組件創建多個呈現器實現了這一功能。不同的呈現器可以與 UI 組件相關聯,在運行時 UI 組件可以根據請求的客户端類型決定使用哪個呈現器。
還應當指出的是,由於 JSF 的可插入呈現功能,使得 JSF UI 組件能夠顯示任何類型的數據,無論它是標記數據(如 HTML、XML、WML 等)還是二進制數據。例如,UI 組件還可以顯示二進制數據,如圖像流或不同的文檔類型,如 SVG、PDF 和 Word。
JSF 開發工具
因為 JavaServer Faces 是一種標準的 Java 技術,因此軟件開發工具完全能夠為 JavaServer Faces 提供高級的集成開發工具支持。多個供應商不同程度地支持 JSF 開發,這大大提高了 JSF 的易用性和功能。Oracle、Sun、Borland 和 IBM 都為 JavaServer Faces 提供了開發環境。由於開發工具供應商在競相提供更好、更簡單和更多的開發環境,因此基於 IDE 的 JSF 開發擁有美好的前景!

JavaServer Faces總結

JavaServer Faces 通過提供模型-視圖-控制器設計模式的一個簡潔實現,同時在不犧牲開發能力和靈活性的前提下提供高效的以組件為中心的開發,解決了 Java Web 開發的許多歷史問題。此外,因為 JSF 是一種 Java 標準,因此多個軟件供應商將繼續提供始終高效的開發環境,這些開發環境毫無疑問將達到或很可能超過專有的可視化開發環境。