關于BS MVC常用框架介紹
文章出處:http://hlpi.cn 作者:興邦開發(fā)部
關于BS MVC常用框架介紹
1.JSF
準確地說,,JSF是一個標準,,而不是一個產(chǎn)品。目前,,JSF已經(jīng)有兩個實現(xiàn)產(chǎn)品可供選擇,,包含Sun的參考實現(xiàn)和Apache的MyFaces。大部分的時候,,我們所說的JSF都是指Sun的參考實現(xiàn),。目前,JSF是作為JEE 5.0的一個組成部分,,與JEE 5.0一起發(fā)布,。
JSF的行為方法在POJO中實現(xiàn),JSF的Managed Bean無需繼承任何特別的類,。因此,,無需在表單和模型對象之間實現(xiàn)多余的控制器層。JSF中沒有控制器對象,,控制器行為通過模型對象實現(xiàn),。
當然,JSF也允許生成獨立的控制器對象,。在Struts 1中,Form Bean包含數(shù)據(jù),Action Bean包含業(yè)務邏輯,,二者無法融合在一起,。在JSF中,既可以將二者分開,,也可以合并在一個對象中,,提供更多靈活的選擇。
JSF的事件框架可以細化到表單中每個字段,。JSF依然是基于JSP/Servlet的,,仍然是JSP/Servlet架構(gòu),因而學習曲線相對簡單,。在實際使用過程中,,JSF也會存在一些不足:
— 作為新興的MVC框架,用戶相對較少,,相關資源也不是非常豐富,。
— JSF并不是一個完全組件化的框架,它依然是基于JSP/Servlet架構(gòu)的,。
— JSF的成熟度還有待進一步提高,。
2.Tapestry
Tapestry并不是一種單純的MVC框架,它更像MVC框架和模板技術的結(jié)合,,它不僅包含了前端的MVC框架,,還包含了一種視圖層的模板技術,使用Tapestry完全可以與Servlet/JSP API分離,,是一種非常優(yōu)秀的設計,。
通過使用Tapestry,開發(fā)者完全不需要使用JSP技術,,用戶只需要使用Tapestry提供的模板技術即可,,Tapestry實現(xiàn)了視圖邏輯和業(yè)務邏輯的徹底分離。
Tapestry使用組件庫替代了標簽庫,,沒有標簽庫概念,,從而避免了標簽庫和組件結(jié)合的問題。Tapsetry是完全組件化的框架,。Tapestr只有組件或頁面兩個概念,,因此,鏈接跳轉(zhuǎn)目標要么是組件,,要么是頁面,,沒有多余的path概念。組件名,,也就是對象名稱,,組件名稱和path名稱合二為一,。
Tapestry具有很高的代碼復用性,在Tapestry中,,任何對象都可看作可復用的組件,。JSP開發(fā)者是真正面向?qū)ο螅皇?/span>URL解析,。對于對頁面要求靈活度相當高的系統(tǒng),,Tapestry是第一選擇。精確地錯誤報告,,可以將錯誤定位到源程序中的行,,取代了JSP中那種編譯后的提示。
因此,,筆者一直對Tapestry情有獨鐘:如果技術允許,,使用Tapestry會帶給整個應用更加優(yōu)雅的架構(gòu),更好的開發(fā)效率,。
3.Spring MVC
Spring提供了一個細致完整的MVC框架,。該框架為模型、視圖,、控制器之間提供了一個非常清晰的劃分,,各部分耦合極低。Spring的MVC是非常靈活的,,它完全基于接口編程,,真正實現(xiàn)了視圖無關。視圖不再強制要求使用JSP,,可以使用Velocity,、XSLT或其他視圖技術。甚至可以使用自定義的視圖機制——只需要簡單地實現(xiàn)View接口,,并且把對應視圖技術集成進來,。Spring的Controllers由IoC容器管理。因此,,單元測試更加方便,。
Spring MVC框架以DispatcherServlet為核心控制器,該控制器負責攔截用戶的所有請求,,將請求分發(fā)到對應的業(yè)務控制器,。
Spring MVC還包括處理器映射、視圖解析,、信息國際化,、主題解析、文件上傳等,。所有控制器都必須實現(xiàn)Controller接口,,該接口僅定義ModelAndView handleRequest(request,,response)方法。通過實現(xiàn)該接口來實現(xiàn)用戶的業(yè)務邏輯控制器,。
Spring MVC框架有一個極好的優(yōu)勢,,就是它的視圖解析策略:它的控制器返回一個ModelAndView對象,該對象包含視圖名字和Model,,Model提供了Bean的名字及其對象的對應關系。視圖名解析的配置非常靈活,,抽象的Model完全獨立于表現(xiàn)層技術,,不會與任何表現(xiàn)層耦合:JSP、Velocity或者其他的技術——都可以和Spring整合,。