SpringMVC和Struts2的區別,為什麼要用SpringMVC
注意本篇文章是基於已經學過並且理解SpringMVC和Struts2的人寫的,如果沒有學過閱讀本篇文章很可能是不理解的。
至於共同點就不想多說了,就是都為檢視層框架,
區別:
1.SpringMVC是基於方法開發的,而Struts2是基於類開發的。
解釋:學過SpringMVC的人都知道,如果不用註解的話,其實每一個訪問路徑都會對映到一個handler上面,而這個handler只有一個方法。就是public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponseresponse) throws
2.SpringMVC是可以單例開發的,但是Struts2是必須多例開發。
解釋:因為SpringMVC是基於方法開發的,原因上面那條已經寫過了,所以在用註解的時候在一個類中定義的service介面不會因為是在一個類的成員變數位置而產生多執行緒安全問題,因為每一方法都是一個新的service物件,並且獲取頁面中的封裝資料是在方法的引數中定義的,所以才可以放心的用單例開發,而Struts2是基於類開發的,在進行頁面資料封裝的時候,必須有成員變數,因為底層是基於內省機制,所以還必須提供set方法,這就會導致執行緒安全問題。
3.SpringMVC速度比Struts2快。
解釋:第一點;由於SpringMVC是可以用單例開發,所以建立物件的個數就會比較少,但是Struts2是多例開發,隨意對於記憶體的消耗是比較費時和浪費空間的。第二點:Struts2使用了自己提供的標籤庫,為了 取到值棧,而在頁面中大量引用自己標籤庫的時候,也會引起速度變慢,jstl的標籤速度比較快,所以在開發的時候想要Struts2快一點,應該儘量用el表示式和jstl。
總結:經過幾番PK,大家應該明白了這兩個框架的區別,也應該知道了,為什麼現在企業越來越多的使用SpringMVC了吧,