Struts2 和 SpringMVC 的差別?
一、框架機制
1、Struts2採用Filter(StrutsPrepareAndExecuteFilter)實現,SpringMVC(DispatcherServlet)則採用Servlet實作。
2、Filter在容器啟動之後即初始化;服務停止以後墜毀,晚於Servlet。 Servlet在呼叫時初始化,先於Filter調用,服務停止後銷毀。
二、攔截機制
1、Struts2
a、Struts2框架是類別層級的攔截,每次要求就會建立一個Action,和Spring整合時Struts2的ActionBean注入作用域是原型模式prototype(否則會出現執行緒並發問題),然後透過setter,getter吧request資料注入到屬性。
b、Struts2中,一個Action對應一個request,response上下文,在接收參數時,可以透過屬性接收,這說明屬性參數是讓多個方法共享的。
c、Struts2中Action的一個方法可以對應一個url,而其類別屬性卻被所有方法共享,這也就無法用註解或其他方式標識其所屬方法了
2 、SpringMVC
a、SpringMVC是方法層級的攔截,一個方法對應一個Request上下文,所以方法直接基本上是獨立的,獨享request,response資料。而每個方法同時又何一個url對應,參數的傳遞是直接注入到方法中的,是方法所獨有的。處理結果透過ModeMap傳回給框架。
b、在Spring整合時,SpringMVC的Controller Bean預設單例模式Singleton,所以預設對所有的請求,只會創建一個Controller,有應為沒有共享的屬性,所以是線程安全的,如果要改變預設的作用域,需要加入@Scope註解修改。
三、效能方面
SpringMVC實現了零配置,由於SpringMVC基於方法的攔截,有載入一次單例模式bean注入。而Struts2是類別層級的攔截,每次要求對應實例一個新的Action,需要載入所有的屬性值注入,所以,SpringMVC開發效率和效能高於Struts2。
四、攔截機制
Struts2有自己的攔截Interceptor機制,SpringMVC這是用的是獨立的Aop方式,這樣導致Struts2的設定檔量還是比SpringMVC大。
五、配置方面
spring MVC和Spring是無縫的。從這個專案的管理和安全上也比Struts2高(當然Struts2也可以透過不同的目錄結構和相關配置做到SpringMVC一樣的效果,但是需要xml配置的地方不少)。
SpringMVC可以認為已經100%零配置。
六、設計思想
Struts2更符合OOP的程式設計思想, SpringMVC就比較謹慎,在servlet上擴充。
七、集成方面
SpringMVC集成了Ajax,使用非常方便,只需一個註解@ResponseBody就可以實現,然後直接返迴響應文本即可,而Struts2攔截器集成了Ajax ,在Action中處理時一般必須安裝插件或自己寫程式碼整合進去,使用起來也相對不方便。
以上是Struts2 和 SpringMVC 的差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)