一、Struts2是類級別, 一個類對應一個request上下文,SpringMVC是方法級別,一個方法對應一個request上下文,而方法同時又跟一個url對應,因此說從架構自己上SpringMVC就容易實現restful url;Struts2的架構實現起來要費勁,由於Struts2中Action的一個方法能夠對應一個url,而其類屬性卻被全部方法共享,這也就沒法用註解或其餘方式標識其所屬方法了。安全
二、SpringMVC的方法之間基本上獨立的,獨享request response數據,請求數據經過參數獲取,處理結果經過ModelMap交回給框架,方法之間不共享變量,而Struts2搞的就比較亂,雖然方法之間也是獨立的,但其全部Action變量是共享的,這不會影響程序運行,卻給咱們編碼 讀程序時帶來麻煩,每次來了請求就建立一個Action,一個Action對象對應一個request上下文restful
三、Struts2有以本身的interceptor機制,SpringMVC用的是獨立的AOP方式,這樣致使Struts2的配置文件量仍是比SpringMVC大。SpringMVC能夠認爲已經100%零配置;SpringMVC開發效率和性能高於Struts2。架構
四、Spring MVC和Spring是無縫的。從這個項目的管理和安全上也比Struts2高(固然Struts2也能夠經過不一樣的目錄結構和相關配置作到SpringMVC同樣的效果,可是須要xml配置的地方很多)。框架
五、SpringMVC的入口是servlet,而Struts2是filter(這裏要指出,filter和servlet是不一樣的),這就致使了兩者的機制不一樣,這裏就牽涉到servlet和filter的區別了。性能