面試:----Struts和springmvc的區別--區別上

SpringMVC和Struts2的區別前端

1核心控制器(前端控制器,預處理控制器);對於使用過MVC框架的人來講這個詞應該不會陌生。核心控制器的主要用途處理全部的請求。而後對那些特殊的請求。統一的進行處理(字符編碼,文件上傳,參數接受,異常處理等等)spring mvc核心控制器是Servlet,而Struts2是Filterajax

2.控制器實例:SpringMVC會比Struts2快些(理論上),SpringMVC是基於方法的設計。而Struts2是基於對象,每次發一次請求都會實例一個Action,每一個Action都會被注入,屬性,而Spring更像Servlet同樣,只有一個實例,每次請求執行對應的方法便可(注意:因爲是單例實例,因此應當避免全局變量的修改這樣會殘生線程安全問題)。spring

3.管理方式:大部門的公司的核心架構中。就會使用到spring而springmvc又是spring中的一個模塊。因此spring對於springmvc控制器管理更加簡單方便。並且提供了全註解方式進行管理,各類功能的註解都比較全面,使用簡單,而Struts2須要採用xml不少的配置參數來管理(雖然也能夠採用註解,可是幾乎沒有公司那麼用)。json

4.參數傳遞:Struts2中自身提供多種參數接受。其實都是經過(ValueStack)進行傳遞和賦值。而SpringMVC是經過方法的參數進行接收。安全

五、學習難度:Struts2更加不少新技術點,好比攔截器,值棧以及OGNL表達式,學習成本比較高。SpringMVC比較簡單,很較少時間上能夠上手。restful

六、Interceptor的實現機制:struts2有以本身的Interceptor機制,spring mvc 用的是獨立的AOP方式,這樣致使struts的配置文件量仍是比spring mvc大,雖然struts的配置能繼承,因此我以爲論使用上來說。spring mvc使用更加簡潔,開發效率確實Spring MVC確實比struts2高。spring mvc是方法級別的攔截,一個方法對應一個Request上下文,實現restful url要費盡,由於struts2 action 的一個方法能夠對應一個url,而其類屬性卻被全部方法共享。這也就沒法用註解或其餘方式標識其所屬方法了。spring mvc 的方法之間基本上獨立的。獨享Request,response數據,請求數據經過參數獲取,處理結果經過ModelMap交回給框架方法之間不共享變量。而Struts2搞的就比較亂,雖然方法之間也是獨立的。但其全部Action變量是共享的。這不會影響程序的運行,卻給咱們編碼,讀程序帶來了麻煩。架構

7.spring mvc 處理ajax請求,直接經過返回數據,方法中使用@reponseBody,Spring mvc 會自動幫咱們轉換成json 數據、mvc

相關文章
相關標籤/搜索