與微軟Visual StudioNET程序開發有可視化工具的支持相比人們在開發基於Java的Web用戶界面時仍然需要手工書寫大量的標簽同時還要考慮頁面狀態信息的保存客戶端事件處理等問題開發難度比較大效率較低重用性差Java Server Faces (JSF) 技術正是為了解決這一問題應運而生的其最引人注目的特性之一是它與標記語言協議客戶端設備無關利用JSF提供的可重用可擴展基於組件的用戶界面框架在快速開發工具RAD的支持下實現可視化開發現在JSF技術已經得到了許多大廠商的支持如SUN公司的JSF Web UIIBM公司的JSF extension以及Oracle的 ADF Faces等許多開源項目(典型的Apache Myfaces)也提供對JSF技術的支持同時OracleSunBorland和IBM等公司都為JSF提供了開發環境
傳統JSP開發存在的問題
實現表示層和業務層的分離這是JEE Web應用一直以來的理想可惜JSP 並沒有真正實現這個目標JSP是一個基於Java的Web用戶界面開發標准技術是一種腳本式開發的Web技術在JSP 頁面中混淆了大量用於顯示邏輯的HTML 和用於業務邏輯的Java 代碼使得頁面設計與程序開發無法分離;JSP另一個更大的缺陷是腳本不能重用這常常導致開發者不得不在JSP頁面之間進行復制粘貼操作進而導致同一段代碼出現多個版本從而使得程序的調試和設計極其錯綜復雜而標簽庫TagLib作為JSP的補充將Java代碼從JSP中剝離也只是有限地實現了表現與邏輯的分離始終沒有擺脫代碼和HTML頁面揉和的問題此外JSP還存在著其他固有的缺陷例如對應Servlet編譯的出錯信息很難在JSP 中找到准確的出錯位置由此給調試帶來很大困難
JSF技術介紹
在Sun公司提出的JEE(Java Enterprise Edition)平台上Java Server Faces (JSF) 是一種用於構建Web應用程序的新標准Java框架它提供了一種以組件為中心來開發Java Web用戶界面的方法從而簡化了開發企業開發人員和Web設計人員將發現JSF開發可以簡單到只需將用戶界面 (UI) 組件拖放到頁面上而系統開發人員將發現豐富而強健的JSF API為他們提供了無與倫比的功能和編程靈活性JSF還通過將良好構建的模型視圖控制器 (MVC)設計模式集成到它的體系結構中確保了應用程序具有更高的可維護性
JSF是由Java Community Process (JCP)制定的一個Web應用框架標准JSF具有良好定義的請求處理生命周期和豐富的組件層次結構旨在推動基於Java的Web用戶界面開發的簡易性利用JSF提供的可重用可擴展基於組件的用戶界面框架在快速開發工具RAD的支持下可以通過拖放組件的方式對Web用戶界面進行可視化編輯將用戶界面上的組件與一個數據源綁定並將客戶端用戶界面產生的事件交給服務器端處理從而大大降低基於Java的Web用戶界面的開發難度提高開發效率
Java Server Faces技術包括兩個主要部分
() 一組用於表示用戶界面組件並管理其狀態處理事件和驗證輸入的JavaAPI這些API支持國際化和可訪問性(accessibility);
() 一個用於在JSP頁面中表示JSF 組件的自定義標簽庫
簡而言之JSF的主要部分是一個GUI組件框架和一個用於跨不同標記語言或客戶端設備描述組件的靈活模型JSF GUI組件框架使開發人員能夠創建JSF應用程序的用戶界面JSF GUI組件包括標准的HTML表單控件(如按鈕)布局組件以及更復雜的組件如數據表此外第三方還可以擴展規范中定義的基本類來開發額外的GUI組件
JSF 組件的體系結構是這樣設計的組件的功能由組件類定義組件的呈現由一個單獨的呈現器(renderer)定義呈現器定義了組件類如何映射為適合特定客戶的組件標簽JSF 參考實現中包含了一個標准的RenderKit用於生成基於HTML 的標記實現將組件類呈現給HTML客戶
JSF 的主要優勢之一就是它既是Java Web用戶界面標准又是嚴格遵循模型視圖控制器 (MVC) 設計模式的框架用戶界面代碼(視圖)與應用程序數據和邏輯(模型)的清晰分離使JSF應用程序更易於管理為了准備提供頁面對應用程序數據訪問的JSF上下文和防止對頁面未授權或不正確的訪問所有與應用程序的用戶交互均由一個前端Facesservlet(控制器)來處理 JSF技術做到了應用程序邏輯和表示的完全分離是真正徹底的MVC模式
JSF技術現在的版本是下一個版本將是 它將和 JEE 一起發布
JSF是構建Web應用程序的新標准Java框架可以依據JSF的框架標准手工書寫Web應用程序以文本方式像寫HTML或JSP程序一樣實現Web用戶界面的設計;同時在開發運行以及調試前還需要搭建系統運行平台
這樣做的缺點是不能充分體現可視化開發的便捷和高效一般是在分析Web應用程序的結構時使用
使用快速開發工具RAD是實現JSF可視化開發的先決條件在快速開發工具的支持下符合JSF標准的Web應用程序開發運行以及調試均在IDE環境中實現大大提高了開發的效率整個程序開發過程快捷高效現在獲得大廠支持的RAD工具很多比如IBM公司的WebSphere StudioOracle公司的JDeveloper和Sun公司的Java Studio Creator等都提供對JSF開發的支持
如果不使用IDE開發環境那麼在開發應用程序前必須先搭建系統運行平台比如安裝TOMCAT和Sun的Java Web Services Developer Pack (JWSDP) 使用JSF時需要JSTL 與JSF的標簽函數庫在Web應用程序的WEBINF\lib目錄下放入所需的JAR文件如果使用IDE開發環境開發前期的准備工作比較簡單只需安裝好IDE環境即可不需要其他的配置一般IDE中都有內嵌的應用服務器足以支持程序的開發運行和調試
不管是否使用IDE開發環境JSF開發Web應用程序通常分為以下三個步驟
()視圖設計
方便快捷地開發基於JSF的Web應用程序是在JSF提供了一組豐富的可重用的服務器端用戶界面組件的條件下實現的在開發工具的支持下用戶可以很容易地在可視化環境中利用這些組件構建Web用戶界面處理組件的數據校驗事件處理等用戶界面管理問題
設計每個需要的JSP頁面在頁面中放置JSF的內置組件並將組件與應用層的JavaBean綁定利用RAD工具能通過拖放組件的方式輕松實現頁面文件不需要手寫大量代碼開發工具自動生成頁面對應的java文件在文件中定義好了頁面的JSF組件及其gettersetter方法以及JSF組件的action屬性對應的方法等程序員可以方便地在已有程序的基礎上修改調試
()模型設計
JSF技術做到了應用程序邏輯和表示的完全分離在模型設計部分程序員只需要考慮程序的邏輯功能不需要考慮數據的表現形式JSF的模型是通過JavaBean程序來實現的
JSF的模型是根據頁面中組件需要處理的業務邏輯而設計實現的在JSF中使用JavaBean可以直接在JSF頁面中聲明或者在配置文件facesconfig xml中聲明
如果手工部署應用則編譯完成的JavaBean文件應放到Web應用程序的WEBINF\classes目錄下(TOMCAT環境下);如果借助於RAD開發工具設計人員就不需要考慮部署的細節開發工具會自動把實現了業務邏輯的JavaBean文件(未編譯的java文件和編譯成功後的jar包)成功地部署在相關位置
()控制器設計
JSF的控制器設計是在配置文件中完成的相關的主要有兩個文件webxml文件和facesconfigxml文件(均在WEBINF目錄下)webxml文件主要用於控制JSF的生命周期實現部署描述符facesconfigxml文件實現導航在文件中控制頁面之間的跳轉流程
配置步驟是首先配置Web應用程序的webxml文件然後是配置JSF的控制文件facesconfigxml文件這兩個文件格式固定在IDE環境中這個過程由工具自動完成不需要設計人員的干預即使手工配置也比較簡單
JSF的技術重點在View部分它實現了Web應用程序設計角色的完全分離JSF網頁設計者只需要專注於頁面的設計;應用程序開發者主要關心Model部分的JavaBean的開發;程序的流程控制則由facesconfigxml專門配置
總結
JSF是基於Java 的Web 應用開發領域裡提供了一個可重用可擴展基於組件工具友好的服務器端UI 框架在支持JSF 的RAD開發工具中人們可以像使用Visual Studio NET一樣方便快捷地構建Web 用戶界面大大降低了利用Java技術實現Web 用戶界面的難度提高了開發效率
JSF具有強大的組件體系和事件處理系統完全實現了MVC模式的應用架構使得基於Java的Web用戶界面程序開發難度大大降低提高了開發效率非常適用於Web頁面的開發
JSF是一個開放的標准具有很好的可擴展性依照JSF 的規范用戶完全可以根據需求定制自己的用戶界面組件事件處理器數據校驗和轉換組件等這些組件和標准的JSF 組件一樣是可重用的JSF API 是直接架構在Servlet API 之上的因此JSF 用戶界面組件的呈現並不局限於特定的腳本技術或標記語言表示層完全可以采用JSP 之外的技術
在眾多的JEE表現層框架技術中JSF表現出其旺盛的生命力盡管JSF技術還有不少問題但隨著JSF技術的不斷成熟和版本更新其必將獲得越來越多的應用
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27202.html