Struts2和springmvc的區別


一、框架機制

   1. spring MVC是通過servlet的方式進行攔截,在第一次請求發送時初始化,並隨着容器關閉而銷毀。

    2. struts2是通過filter(攔截器)的方式進行攔截,在容器初始化時加載。晚於servlet銷毀。


二、攔截機制

    1.struts2 是類級別上的攔截,每次請求都會創建一個對應的action,一個url對應action中的一個方法,action類中的屬性被所有方法共享,所以action在spring只能配置成多例的,因為是多例的,無法使用注解等方式開發。如果有兩個請求同時訪問action,則會發生線程並發,導致類屬性值錯亂,線程不安全。struts2通過類屬性的方式接收請求參數,並通過get,set方法設置值,也可以通過模型驅動的方式注入值,action類需要繼承ActionSupport實現ModelDrivenMO<T>接口。struts2使用的是值棧機制,將頁面需要的值壓入值棧,則可在頁面上通過OGNL表達式獲取。Struts2有自己的攔截機制,自定義Interceptor類,然后進行配置,配置文件非常大。

 2.spring MVC是方法級別上的攔截,一個請求對應着一個controller中的方法,請求參數會封裝到方法參數中,如果是對象類型的參數則需要在參數名前加上@RequestBody注解即可。controller類中的屬性被方法所共享,controller類默認是單例的,在請求發送時不會創建對象,所以可以使用注解開發。spring MVC則是通過方法參數model對象來設置需要返回的值,(和request的用法相似,因為底層封裝的就是request),在頁面通過el表達式獲取。springMVC有獨立的AOP攔截機制。


三、性能方面

    1.spring MVC幾乎實現了零配置,在配置了基本的東西之后,再編寫controller類和方法時,只需加上注解即可,無需頻繁修改配置文件,而struts2的機制讓他無法使用注解開發,那就需要編寫一個action類配置一遍,顯得非常繁瑣。


四、集成

    1.spring MVC和spring是同一家公司出的,所以整合時無需配置,而struts2則需要編寫整合配置。

五、設計思想

   1.struts2 更符合OOP編程思想,spring MVC 則是再servlet上擴展功能。


六、與ajax的集成

    1.spring MVC只需要在交互方法上加上@ResponseBody即可在返回值中返回數據,spring MVC會自動將返回值數據轉換成json數據。非常方便。

    2.struts2則需要自己手動將返回值數據轉換成json格式,再手動寫回瀏覽器。返回 NONE;



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM