Struts2和SpringMVC之間的區(qū)別


Struts2和SpringMVC的區(qū)別_騰訊視頻

兩個問題:

一.SpringMVC和Struts有什么區(qū)別

1.核心控制器: 即用來處理請求的核心組件,SpringMVC的核心控制器是servlet,Struts2的核心控制器是Filter.

2.控制器實例:Spring Mvc是基于方法設計,而Sturts是基于對象,每次發(fā)一次請求都會實例一個action,每個action都會被注入? 屬性,而SpringMVC更像Servlet一樣,只有一個實例,每次請求執(zhí)行對應的方法即可(注意:由于是單例實例,所以應當避免全局變量的修改,否則會產(chǎn)生線程安全問題)

3.管理方式: 兩者都可以使用spring來管理,而兩者在管理方式上的主要區(qū)別是對注解的支持程度,因為spring mvc是spring中的一個模塊,所以spring對于spring mvc的控制器管理更加簡單方便一些.

4.參數(shù)傳遞: Struts2中自身提供多種參數(shù)接受,其實都是通過(ValueStack)進行傳遞和賦值,而SpringMvc是通過方法的參數(shù)進行接收

5.interceptor的實現(xiàn)機制: Struts2有以自己的interceptor機制,Spring mvc用的是獨立的AOP方式。所以struts的配置文件量還是比spring mvc大.

以上5點資料來源于:SpringMvc和Struts2的對比

二.為什么SpringMVC框架會逐步取代Struts2框架?

1. 使用簡單,學習成本低.從搭建Struts2框架的經(jīng)歷來看,SpringMVC的學習難度小于Struts2,Struts2框架搭建起來要更加復雜

2. SpringMVC很容易就寫出性能優(yōu)秀的程序,但是Struts2則要處處小心才能寫出性能優(yōu)秀的程序

3. SpringMVC對Ajax的支持更加優(yōu)秀.因為SpringMVC集成了Ajax,只需要添加@ResponseBody注解或者通過jsp就可以實現(xiàn)返回json數(shù)據(jù),而Struts2要傳遞json數(shù)據(jù),就必須要安裝插件或者自己集成,使用不方便

4. SpringMVC對restful風格接口的支持更加優(yōu)秀.這一點我們做任務的時候就可以看出來,只需要將@RequestMapping中的參數(shù)設置成restful風格的接口,設置相應的HTTP方法即可,但是Struts2如果實現(xiàn)restful風格的接口,還需要我們添加rest風格的struts插件,修改配置文件,修改源碼才可以,非常繁瑣

三,如何返回json數(shù)據(jù)

1.在pom文件中添加struts2-json-plugin依賴


json插件的pom依賴

2.在struts.xml中配置


struts.xml文件中的配置

3.在執(zhí)行類中將需要轉換為json的數(shù)據(jù)添加進mapData中返回


Action類中配置

通過Action類中的配置可以看到,dataMap的數(shù)據(jù)時通過getDataMap返回的

參考文獻:

Struts官網(wǎng)

PPT鏈接地址

PPT

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容