JSF初學之概念篇1

来源:https://www.cnblogs.com/maooveyu/archive/2019/01/15/10274505.html
-Advertisement-
Play Games

先轉一篇介紹JSF的文章: Javaserver Faces 簡介 — 什麼是 JSF? 作者:Chris Schalk,Oracle Corporation2005 年 4 月 什麼是 JSF? JavaServer Faces (JSF) 是一種用於構建 Web 應用程式的新標準 Java 框架 ...


先轉一篇介紹JSF的文章:

Javaserver Faces 簡介 — 什麼是 JSF?

作者:Chris Schalk,Oracle Corporation
2005 年 4 月

什麼是 JSF?

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

JSF 體繫結構

JavaServer Faces 的 MVC 實現

JSF 的主要優勢之一就是它既是 Java Web 用戶界面標準又是嚴格遵循模型-視圖-控制器 (MVC) 設計模式的框架。用戶界面代碼(視圖)與應用程式數據和邏輯(模型)的清晰分離使 JSF 應用程式更易於管理。為了準備提供頁面對應用程式數據訪問的 JSF 上下文和防止對頁面未授權或不正確的訪問,所有與應用程式的用戶交互均由一個前端“Faces”servlet(控制器)來處理。

圖 1:JavaServer Faces 的 MVC 實現

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 組件。這些組件包括針對每種客戶端類型的多種呈現器、高級表格、顏色和日期選擇器以及大量通用組件(如菜單、命令按鈕、轉移選擇器和進度指示計)。

圖 2:Oracle 的 ADF Faces JSF UI 組件

除了 Oracle 的 ADF Faces 之外,還有其他新的 JSF 組件庫開始從開放源代碼社區和軟體供應商社區中出現。MyFaces 就是一個新 JSF UI 組件庫的例子,它通過 Apache 作為一個開放源代碼項目提供的。Myfaces 還是對 JSF 基本 UI 組件的增強,它擁有更廣泛的 UI 功能,如集成的 Tiles 支持、支持 Javascript 的菜單和樹控制項。

圖 3:開放源代碼的 MyFaces 實現和 UI 組件庫

JSF UI 組件的可插入呈現技術

JSF UI 組件技術最引人註目一個方面就是它的可插入呈現功能。JSF UI 組件能夠根據查看組件的客戶端的類型來以不同方式呈現自身。例如,HTML 瀏覽器將看到特定 UI 組件的“HTML 瀏覽器友好”版本,而支持無線或 WAP 的微型設備將看到同一UI 組件的“WML 友好”版本!JSF 通過解除 UI 組件與其呈現邏輯之間的耦合從而能夠為同一 UI 組件創建多個呈現器實現了這一功能。不同的呈現器可以與 UI 組件相關聯,在運行時 UI 組件可以根據請求的客戶端類型決定使用哪個呈現器。

圖 5:一個 ADF Faces 表格組件針對無線客戶端和 HTML 客戶端進行了不同的呈現

還應當指出的是,由於 JSF 的可插入呈現功能,使得 JSF UI 組件能夠顯示任何類型的數據,無論它是標記數據(如 HTML、XML、WML 等)還是二進位數據。例如,UI 組件還可以顯示二進位數據,如圖像流或不同的文檔類型,如 SVG、PDF 和 Word。

一個新的 JSF 組件開發人員社區

隨著 JSF 開發人員和擁護者社區的不斷壯大,現在有幾個網站致力於進一步推動獨立的 JSF 開發。JSFCentral 就是一個完全為 JSF 開發社區服務的新網站。它包含 JSF 技術信息、產品/組件信息以及大量與 JSF 相關的文章。

圖 4:JSFCentral — 一個免費的 Javaserver Faces 社區

(JSFCentral 的地址是:http://jsfcentral.com

JSF 開發工具

因為 JavaServer Faces 是一種標準的 Java 技術,因此軟體開發工具完全能夠為 JavaServer Faces 提供高級的集成開發工具支持。多個供應商現在不同程度地支持 JSF 開發,這大大提高了 JSF 的易用性和功能。Oracle、Sun、Borland 和 IBM 都為 JavaServer Faces 提供了開發環境。由於開發工具供應商在競相提供更好、更簡單和更多的開發環境,因此基於 IDE 的 JSF 開發擁有美好的前景!

圖 6:Oracle 的 JDeveloper 提供高效、可視化的 JSF 開發體驗

總結

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、概述 只要用框架開發java,一定躲不過spring,Spring是一個輕量級的Java開源框架,存在的目的是用於構建輕量級的J2EE應用。Spring的核心是控制反轉(IOC)和麵向切麵編程(AOP)。spring有如下特點: 輕量級:應用大小和應用開支,包括應用方式 DI/IoC:提供松耦合 ...
  • Spring Security(三) 個性化用戶認證流程 自定義登錄頁面 在配置類中指定登錄頁面和接收登錄的 url 在項目中新建登錄頁面 啟動項目時再訪問 Security 就會跳轉到你自已定義的登陸頁面讓你登錄。 深入定義(判斷是PC端還是移動端,PC端跳轉頁面,移動端響應 json) 創建一個 ...
  • 今天在家裡的Linux系統上,試著搭建Eclipse C/C++開發環境,最後終獲成功。下麵貼上兩篇對搭建過程很有幫助的文章 用 Eclipse 平臺進行 C/C++ 開發 https://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/ ...
  • PEP8編碼規範是一種非常優秀的編碼規範,也得到了Python程式員的普遍認可,如果實踐中或者項目中沒有統一的編碼規範,建議儘量遵循PEP8編碼規範,當然如果項目中已經有了自身的編碼規範,應當優先遵循自身的編碼規範,哪怕原先的代碼風格在你看來很糟糕,也要儘量與源代碼風格保持一致。原文地址:https ...
  • 最近在學習Spring如何讀取配置文件,記錄下方便自己也方便別人; 大致分為兩類吧,一種的思路是利用Spring的beanFactoryPostProcessor讀取配置文件內容到記憶體中,也就是應用程式的某個對象的屬性中,然後設置上去; 另外一種思路就是SPEL表達式,這是Spring3.x的特性, ...
  • GitHub DES 數據加密標準(Data Encryption Standard),簡稱DES,是由IBM公司提交,美國政府於1977年1月5日頒佈的一種加密演算法。 DES的設計目標是,用於加密保護靜態存儲和傳輸通道中的數據,安全使用10~15年。 DES綜合運用了置換、代替、代數等多種密碼技術 ...
  • 項目說明: Python版本:3.7.2 模塊:urllib.request,re,os,ssl 目標地址:http://小草.com/ 第二個爬蟲項目,設備轉移到了Mac上,Mac上的Pycharm有坑, 環境變數必須要配置好,解釋器要選對,不然模塊載入不出來 項目實現: 小草圖片下載時後有ssl ...
  • var arr1=Mtxts.split(";"); var arr2 = new Array(arr1.length); for (var i = 0; i < arr1.length-1; i++) { //定義臨時數組 var temp =new Array(2); //將一維數組再次拆分,準 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...