近來閑來無事,看來一些關于JSF的資料,發現這項SUN制定的規范,真是有許多獨具匠心的妙處。從架構上雖然它是Struts的升級版,但相對于Struts,JSF更為簡單,也更容易學習及上手。由于其與生俱來的擴展性及良好的設計,在大規模的應用中,將會體現出更多的好處。而且,未來它將包含在J2EE規范中,也就是說未來的J2EE服務器都會支持這項規范。也就是說,我們會有更多的實現可以選擇。
JSF給我留下最深印象的是用其編寫的JSP頁面代碼非常地整潔及易讀,沒有過多的修飾與冗余。在這種頁面中,我們僅僅看到各種UI組件布局還有其綁定組件的邏輯。這些綁定機制并沒有直接綁定到代碼組件上,而是通過配置文件,利用別名機制,將它與具體的控制器與業務邏輯的耦合性大大降低。也就是說,通過配置文件這座橋梁(應用了Front controller<前端控制器>模式),頁面的編寫可以更側重于UI表現邏輯。這一點,我想對于大型的項目非常的重要,因為它更容易管理,面且可以讓更專業的人員來編寫和維護。它帶來的另一個好處是,因為與前端UI頁面的隔離,使得后的控制器還有業務邏輯更容易用自動化代碼來進行測試,更容易形成測試框架。
JSF渲染機制給我留下了另一個興奮點。因為不同的廠商可以實現不同的RenderKit??赡芟胂瘢绻幸惶?,在某些應用中不僅要支持Web,而且要支持Wap,這種情況下,重寫整個UI邏輯界面,這種工作量也是相當大的。如何保證所進行的只是少量的改動,而不是原先所有的UI邏輯呢?答案就在于使用不同的RenderKit。在相同的UI頁碼代碼下,我們可以使用這種機制將它渲染成HTML,還可能是XUML等等。
介紹JSF的資料可以參考如下的鏈接:
http://www-128.ibm.com/developerworks/library/j-jsf1/
http://www.fawcette.com/javapro/2004_01/magazine/features/cschalk/
下面的鏈接講解了如何構建JSF的自定義組件:
http://www.theserverside.com/articles/article.tss?l=BuildingCustomJSF
當然有本書也許是進一步了解JSF的一種好途徑,《Mastering JavaServer Faces》這本書將讓你更深入地了解JSF的架構及其應用。