spring mvc架構學習總結

來源:互聯網
上載者:User

最近項目要用到spring mvc 架構,看了一些資料,現整理備以後遺忘。

1、spring MVC架構採用了command+controller的模式,整體架構如所示:


核心的控制器是DispatcherServlet,返回的視圖對象是ModeAndVIew對象。

2、在非Annotation base controller情況下,controller類是AbstractControllor子類;有表單時,可繼承SimpleFormController類,onSubmit方法是表單提後預設執行的方法。

3、spring mvc的校正要建立一個校正的類,該類要實現Validator介面,且重寫validate方法,一般在該項方法內部調用ValidationUtils工具類來校正;JSP頁面內就有錯誤的form:error標籤,且path屬性指出是哪個域要執行校正;bean的設定檔中validate-ref屬性指出校正類bean的ID。

4、spring mvc的攔截器也要建立一個實現了HandlerIntercepterAdapter的類,該類要重寫preHandle,postHandle和afterCompletion 三個方法,意思你懂得。在bean的設定檔中,需要作用到這些攔截器的bean配置 中加屬性intercepters-ref指出攔截器bean的ID即可。

5、spring mvc 的controller繼承MulitActionController即可在一個controller根據不同的方法名處理多個Action請求,只需在bean設定檔中指明即可。

6、spring mvc架構支援annotation base controller,常用的annotation有@Controller,@RequestMapping,@SessionAttribute

現在各主流java web架構優缺點總結如下

然後,Matt按照這些評價標準,對各個架構做了以下闡述:

Ajax支援

◆JSF:沒有內建的Ajax支援,需要使用ICEfaces和Ajax4JSF

◆Stripes:沒有對應的類庫,支援流輸出

◆Struts 2:內建Dojo,有用於GWT和JSON的外掛程式

◆Spring MVC:沒有對應的類庫,需要使用DWR和Spring MVC擴充

◆Tapestry:Tapestry 4.1中,有內建的Dojo

◆Wicket:有Dojo和Script.aculo.us支援

書籤能力

◆JSF:可以任意提交——URL甚至不被考慮

◆Stripes:使用約定,但是你可以不加理會

◆Struts 2:有命名空間的概念,這使得收藏某個頁面並返回變得容易

◆Spring MVC:允許完全的URL控制

◆Tapestry:依然存在一些醜陋的URL

◆Wicket:允許裝配(mount)頁面/URL

驗證

◆JSF:預設的國際化資訊醜陋,但是配置簡單

◆Stripes和Wicket:用Java類進行驗證——不支援用戶端驗證

◆Struts 2:使用OGNL完成強大的運算式驗證功能;只有在Action上指定了規則,才支援用戶端驗證。

◆Spring MVC:允許你使用公用驗證器——這是一種成熟的解決方案

◆Tapestry:有健壯的驗證功能——不需自訂就有漂亮的國際化資訊

可測試性

◆Spring MVC和Struts 2:允許利用mocks(例如EasyMock、jMock和Spring Mocks)簡單地進行測試

◆Tapestry:測試困難,因為頁面類被抽象、具體類被簡化

◆JSF:頁面類可以方便地被測試,實際上很像Struts 2 中的actions

◆Wicket:有WicketTester——一個強大的解決方案

◆Stripes:有Servlet API Mocks和MockRoundtrip

提交和重新導向

解決重複提交問題的最簡單方法是:在提交後重新導向

◆Spring MVC:允許你將參數加到重新導向URL上

◆Stripes、Tapestry和Wicket:有“flash式”的支援

◆Struts 2:需要一個自訂的解決方案

◆JSF:需要一個自訂的解決方案,國際化資訊很難加入到頁面bean中

國際化

◆JSTL的標籤使國際化變得簡單;如何將國際化資訊放到控制器類中,還沒有一個統一的標準。

◆Stripes、Spring MVC和JSF:每個地區使用一個資源繫結檔案

◆Struts 2、Tapestry和Wicket:提倡把每個頁面/action用到的資源檔分開

◆JSF:需要在每個頁面上定義資源綁定資訊

◆Tapestry:標籤比較可怕

頁面修飾

◆Tiles能夠用於Struts 2、Spring MVC和JSF中;需要對每個頁面進行配置。

◆SiteMesh能夠用於所有的這些架構中(不推薦在JSF、Tapestry或者Wicket中使用);在設定完成後, 只需要很少的維護。

開發工具

◆Spring MVC:Spring IDE,但是只做XML校正,不是一個UI/web工具

◆Struts 2:Eclipse

◆Tapestry:Spindle,對編碼者非常有利

◆JSF:眾多IDE支援,並且做得越來越好

◆Stripes和Wicket:沒有任何官方工具

◆NetBeans目前支援Struts *、JSF(+Facelets)、Tapestry和Wicket,尚不支援Stripes和Spring MVC



市場需求

◆Struts 1:需求依然很大並且被廣泛使用

◆Spring MVC:越來越受關注,但大部分是因為Spring架構的一些其他特徵

◆JSF:很快地變得流行起來

◆Struts 2:正在獲得地盤,但是相關的工作機會很少

◆Tapestry:在過去的數年裡,受歡迎程度不斷增加

◆Wicket和Stripes:還是未知數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.