1. 實現機制
struts2框架是類級別的攔截,每次來了請求就創建一個controller中對應的Action,然后調用setter getter方法把request中的數據注入 。struts2實際上是通過setter getter方法與request打交道的。struts2中,一個Action對象對應一個request上下文。spring3 mvc不同,spring3mvc是方法級別的攔截,攔截到方法后根據參數上的注解,把request數據注入進去。在spring3mvc中,一個方法對應一個request上下文,而方法同時又跟一個url對應。所以說從架構本身上 spring3 mvc就容易實現restful url。而struts2的架構實現起來要費勁,因為struts2 action的一個方法可以對應一個url,而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標識其所屬方法。
spring MVC會稍微比struts快。
2. Request數據共享
spring3mvc的方法之間基本上獨立的,獨享request response數據。請求數據通過參數獲取,處理結果通過ModelMap交回給框架,方法之間不共享變量。而struts2搞的就比較亂,雖然方法之間也是獨立的,但其所有Action變量是共享的。這不會影響程序運行,卻給我們編碼、讀程序時帶來麻煩 。