當前位置: 首頁> 學習園地

spring mvc 和 struts 2的區別是什么?

2020-04-29 14:47:30更新

struts框架雖然我們不用了,也沒學,但是面試的時候千萬不要說沒學過,應該說,只是簡單的了解過。

(1)Struts2是類級別的攔截, 一個類對應一個request上下文,SpringMVC是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以,從架構本身老看,SpringMVC 就更容易實現restful url。

(2)由上邊原因,SpringMVC的方法之間基本上獨立的,獨享request response數據,請求數據通過參數獲取,處理結果通過ModelMap交回給框架,方法之間不共享變量。但Struts2搞的就比較亂,雖然方法之間也是獨立的,但其所有Action變量是共享的,這不會影響程序運行,卻給我們編碼、讀程序帶來麻煩,每次來了請求就創建一個Action,一個Action對象對應一個request上下文。

(3)由于Struts2需要針對每個request進行封裝,把request,session等servlet生命周期的變量封裝成一個一個Map,供給每個Action使用,并保證線程安全,所以在原則上,是比較耗費內存的。

(4)SpringMVC集成了Ajax,使用非常方便,只需一個注解@ResponseBody就可以實現對json的解析,然后直接返回響應文本即可。雖然Struts2攔截器也集成了Ajax,但在Action中處理時一般必須安裝插件或者自己寫代碼集成進去,使用起來也相對不方便。

(5)springMVC面向方法開發(更接近service接口的開發方式),Struts2面向類開發。

(6)springMVC可以單例(singleton)開發,Struts2只能是多例開發。

(7)核心控制器(前端控制器、預處理控制器):對于使用過mvc框架的人來說這個詞應該不會陌生,核心控制器的主要用途是處理所有的請求,然后對那些特殊的請求(控制器)統一的進行處理(字符編碼、文件上傳、參數接受、異常處理等等)。spring mvc核心控制器是Servlet,而Struts2是Filter。