兩個問題:
一.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依賴

2.在struts.xml中配置

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

通過Action類中的配置可以看到,dataMap的數(shù)據(jù)時通過getDataMap返回的
參考文獻:
PPT鏈接地址