spring MVC

SpringFrameWork的後續產品

Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,可以選擇使用Spring的Spring MVC框架或集成其他MVC開發框架,如Struts1(現在一般不用),Struts 2(一般老項目使用)等。

框架


通過策略介面,Spring 框架是高度可配置的,而且包含多種視圖技術,例如 JavaServer PagesJSP)技術、Velocity、TilesiTextPOI。Spring MVC 框架並不知道使用的視圖,所以不會強迫開發者只使用 JSP 技術。Spring MVC 分離了控制器、模型對象、過濾器以及處理程序對象的角色,這種分離讓它們更容易進行定製。

優點


Lifecycle for overriding binding, validation, etc,易於同其它View框架(Tiles等)無縫集成,採用IOC便於測試。
它是一個典型的教科書式的mvc構架,而不像struts等都是變種或者不是完全基於mvc系統的框架,對於初學者或者想了解mvc的人來說我覺得 spring是最好的,它的實現就是教科書!第二它和tapestry一樣是一個純正的servlet系統,這也是它和tapestry相比 struts所具有的優勢。而且框架本身有代碼,看起來容易理解。

單元測試


關於Spring MVC Controller 層的單元測試
測試準備工作:
1、搭建測試Web環境
2、注入Controller 類
3、編寫測試數據
測試數據的文件名一定要與測試類的文件名相同,比如測試數據BeanControllerTest.xml ,測試類 BeanControllerTest。
4、注入測試數據

常用註解


MVC已經是現代Web開發中的一個很重要的部分,下面介紹一下Spring MVC的一些使用心得。
之前的項目比較簡單,多是用JSP 、Servlet + JDBC 直接搞定,在項目中嘗試用 Struts(Struts MVC)+Spring+Hibernate, 嚴格按照分層概念驅動項目開發,因項目需求一直不斷變化,功能不斷擴充、增強,技術構建也幾經改變到目前有個穩定的應用,體會了很多感受,這次先對 Spring MVC 層進行一些個人總結。
MVC作為WEB項目開發的核心環節,正如三個單詞的分解那樣,C(控制器)將V(視圖、用戶客戶端)與M(javaBean:封裝數據)分開構成了MVC ,這邊不去討論項目中是否應用MVC ,也不針對MVC的實現原理進行講解,而是探討實踐中如何從應用SSH, 到Struts(Struts MVC)+Spring+Hibernate的演化過程。
先看 Struts 如何與 Spring 結合處理一次簡單的請求響應代碼,前台可以設為用 AJAX 調用:
1. 在 struts-config.xml 文件中加入
2.在 applicationContext.xml 文件中加入
3.cn.base.GetPersonListAction 實現請求響應代碼
可以看出一次請求需求如此多的步驟,在加上一個項目下來有很多這樣的請求響應,將給配置文件管理帶來很大的麻煩。
經過對 Spring 的深入應用, Spring 本身提供的 URL 請求控制,對其天然支持可以讓我們不需要 applicationContext.xml 再次聲明一次 URL 請求 Bean ,即減少了 Struts 的聲明 URL ,達到減少些繁瑣的配置。但只是少了一些而已,同樣也會面臨著配置文件的管理問題。
Spring 註解將給我們的工作帶來些輕鬆,利用反射機制原理出現的註解就是為了解決配置大量的配置問題。請看下處理一次簡單的請求響應代碼
可以看出,在代碼上加入註解可以省去我們上面說的多個配置文件的工作,達到簡便的 MVC 處理請求響應。
再配上簡單的配置文件聲明,即可輕鬆處理項目的全部請求控制工作。
Spring MVC亂碼問題
在使用Spring MVC 做java Web 項目時,亂碼問題時常都會出現,解決方法也不盡相同,有簡單也有複雜的;如果加入了Spring框架之後就不一樣了,可以採用Spring框架自帶的過濾器CharacterEncodingFilter,這樣可以大大減輕了我們的工作量,即簡單方便又容易理解,配置方式如下:在web.xml文件中filter的位置加上如下內容: