java在最近幾年逐漸升溫,隨著java se 5和java se 6的推出,java的未來更顯得無比輝煌。但以java為基礎的jsp在java se 5推出之前卻一直抬不起頭來,這最重要的原因就是jsp雖然功能十分強大,但最大的優點也是它的最大缺點,功能強大就意味著復雜,尤其是設計前端界面的可視化工具不多,也不夠強大。因此,設計jsp頁面就變得十分復雜和繁瑣...
java在最近幾年逐漸升溫,隨著java se 5和java se 6的推出,java的未來更顯得無比輝煌。但以java為基礎的jsp在java se 5推出之前卻一直抬不起頭來,這最重要的原因就是jsp雖然功能十分強大,但最大的優點也是它的最大缺點,功能強大就意味著復雜,尤其是設計前端界面的可視化工具不多,也不夠強大。因此,設計jsp頁面就變得十分復雜和繁瑣。不過,在java se 5推出的同時,sun為了簡化jsp的開發難度,推出了新的javaserver faces(簡稱jsf)規范。從而使jsp走上了康莊大道。
一、什么是jsf
jsf和jsp是一對新的搭檔。jsp是用于后臺的邏輯處理的技術,而jsf恰恰相反,是使開發人員能夠快速的開發基于 java 的 web 應用程序的技術,是一種表現層技術。目前,jsf1.2已經正式作為一個標準加入了java ee 5中。
作為一種高度組件化的技術,開發人員可以在一些開發工具的支持下,實現拖拉式編輯操作,用戶只需要簡單的將 jsf 組件拖到頁面上,就可以很容易的進行 web 開發了。這是其作為一種組件化的技術所具有的最大好處,我們能用的組件不光是一些比較簡單的輸入框之類,還有更多復雜的組件可以使用的,比如 datatable 這樣的表格組件, tree 這樣的樹形組件等等。
作為一種標準的技術,jsf還得到了相當多工具提供商的支持。同時我們也會有很多很好的免費開發工具可以使用,前不久 sun java studio creator 2 和 oracle jdeveloper 10g 作為免費的支持 jsf 的開發工具發布,給 jsf 帶來了不小的生氣。另外我們也有一些很優秀的商業開發工具可共選擇,bea workshop (原 m7 nitrox),exadel,myeclipse 這樣的基于 eclipse 的插件開發工具,為現在廣大的 eclipse 用戶帶來了不小的便利,ibm 的 rational application developer 和 borland 的 jbuilder 也是很不錯的支持 jsf 可視化開發的商業開發工具。
jsf和傳統的web技術有著本質上的差別,在傳統的web技術需要用戶自己對瀏覽器請求進行捕捉,保存客戶端狀態,并且手工控制著頁面的轉向,等等。而jsf的出現,無疑給我們帶來了巨大的便利,jsf 提供了事件驅動的頁面導航模型,該模型使應用程序開發人員能夠設計應用程序的頁面流。與 struts 的方式向類似的是,所有的頁面流信息都定義在 jsf 配置 xml 文件 (faces-config.xml) 中,而非硬編碼在應用程序中。這很大程度簡化了開發人員開發難度,簡化了應用程序的開發。
同時jsf也是一種遵循模型-視圖-控制器 (mvc) 模式的框架。實現了視圖代碼(view)與應用邏輯(model)的完全分離,使得使用 jsf 技術的應用程序能夠很好的實現頁面與代碼的分離。所有對 jsf 頁面的請求都會通過一個前端控制器 (facesservlet) 處理,系統自動處理用戶的請求,并將結果返回給用戶。這和傳統的 mvc 框架并沒有太大的區別。
在jsf中不僅使用了 pojo 技術,而且還使用了類似 spring 的控制反轉(ioc) (或稱為依賴注入-di) 技術,在 jsf 的 backing bean 中,我們可以把視圖所需要的數據和操作放進一個 backing bean 中。同時得益于 jsf 使用的 di 技術,我們可以在配置文件中初始化 managed bean,同時我們也可以通過這樣的技術很方便的和使用類似技術的 spring 進行整合。
新聞熱點
疑難解答