簡單了解SpringMVC與Struts2的區(qū)別
這篇文章主要介紹了簡單了解SpringMVC與Struts2的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
1、Struts2是類級(jí)別的攔截, 一個(gè)類對應(yīng)一個(gè)request上下文,SpringMVC是方法級(jí)別的攔截,一個(gè)方法對應(yīng)一個(gè)request上下文,而方法同時(shí)又跟一個(gè)url對應(yīng),所以說從架構(gòu)本身上SpringMVC就容易實(shí)現(xiàn)restful url,而struts2的架構(gòu)實(shí)現(xiàn)起來要費(fèi)勁,因?yàn)镾truts2中Action的一個(gè)方法可以對應(yīng)一個(gè)url,而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標(biāo)識(shí)其所屬方法了。
2、SpringMVC的方法之間基本上獨(dú)立的,獨(dú)享request response數(shù)據(jù),請求數(shù)據(jù)通過參數(shù)獲取,處理結(jié)果通過ModelMap交回給框架,方法之間不共享變量,而Struts2搞的就比較亂,雖然方法之間也是獨(dú)立的,但其所有Action變量是共享的,這不會(huì)影響程序運(yùn)行,卻給我們編碼 讀程序時(shí)帶來麻煩,每次來了請求就創(chuàng)建一個(gè)Action,一個(gè)Action對象對應(yīng)一個(gè)request上下文。
3、由于Struts2需要針對每個(gè)request進(jìn)行封裝,把request,session等servlet生命周期的變量封裝成一個(gè)一個(gè)Map,供給每個(gè)Action使用,并保證線程安全,所以在原則上,是比較耗費(fèi)內(nèi)存的。
4、 攔截器實(shí)現(xiàn)機(jī)制上,Struts2有以自己的interceptor機(jī)制,SpringMVC用的是獨(dú)立的AOP方式,這樣導(dǎo)致Struts2的配置文件量還是比SpringMVC大。
5、SpringMVC的入口是servlet,而Struts2是filter(這里要指出,filter和servlet是不同的。以前認(rèn)為filter是servlet的一種特殊),這就導(dǎo)致了二者的機(jī)制不同,這里就牽涉到servlet和filter的區(qū)別了。
6、SpringMVC集成了Ajax,使用非常方便,只需一個(gè)注解@ResponseBody就可以實(shí)現(xiàn),然后直接返回響應(yīng)文本即可,而Struts2攔截器集成了Ajax,在Action中處理時(shí)一般必須安裝插件或者自己寫代碼集成進(jìn)去,使用起來也相對不方便。
7、SpringMVC驗(yàn)證支持JSR303,處理起來相對更加靈活方便,而Struts2驗(yàn)證比較繁瑣,感覺太煩亂。
8、Spring MVC和Spring是無縫的。從這個(gè)項(xiàng)目的管理和安全上也比Struts2高(當(dāng)然Struts2也可以通過不同的目錄結(jié)構(gòu)和相關(guān)配置做到SpringMVC一樣的效果,但是需要xml配置的地方不少)。
9、 設(shè)計(jì)思想上,Struts2更加符合OOP的編程思想, SpringMVC就比較謹(jǐn)慎,在servlet上擴(kuò)展。
10、SpringMVC開發(fā)效率和性能高于Struts2。
11、SpringMVC可以認(rèn)為已經(jīng)100%零配置。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java中struts2和spring MVC的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- 詳談Servlet和Filter的區(qū)別以及兩者在Struts2和Springmvc中的應(yīng)用
- Spring MVC的web.xml配置詳解
- SpringMVC 數(shù)據(jù)校驗(yàn)方法(必看篇)
- Spring MVC配置雙數(shù)據(jù)源實(shí)現(xiàn)一個(gè)java項(xiàng)目同時(shí)連接兩個(gè)數(shù)據(jù)庫的方法
- springmvc整合freemarker配置的詳細(xì)步驟
- SpringMVC中MultipartFile上傳獲取圖片的寬度和高度詳解
- 淺談SpringMVC中的session用法及細(xì)節(jié)記錄
相關(guān)文章
詳解SpringBoot通用配置文件(不定時(shí)更新)
這篇文章主要介紹了SpringBoot通用配置文件詳解(不定時(shí)更新),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
使用mybatis的interceptor修改執(zhí)行sql以及傳入?yún)?shù)方式
這篇文章主要介紹了使用mybatis的interceptor修改執(zhí)行sql以及傳入?yún)?shù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringBoot利用切面注解及反射實(shí)現(xiàn)事件監(jiān)聽功能
這篇文章主要介紹了springboot事件監(jiān)聽,通過利用切面、注解、反射實(shí)現(xiàn),接下來將對這幾種方式逐一說明,具有很好的參考價(jià)值,希望對大家有所幫助2022-07-07
JavaApi實(shí)現(xiàn)更新刪除及讀取節(jié)點(diǎn)
這篇文章主要介紹了JavaApi實(shí)現(xiàn)更新刪除及讀取節(jié)點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
超詳細(xì)講解Java秒殺項(xiàng)目用戶驗(yàn)證模塊的實(shí)現(xiàn)
這是一個(gè)主要使用java開發(fā)的秒殺系統(tǒng),項(xiàng)目比較大,所以本篇只實(shí)現(xiàn)了用戶驗(yàn)證模塊,代碼非常詳盡,感興趣的朋友快來看看2022-03-03
Spring?Boot使用Schedule實(shí)現(xiàn)定時(shí)任務(wù)的方法
這篇文章主要介紹了Spring?Boot使用Schedule實(shí)現(xiàn)定時(shí)任務(wù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
在安卓系統(tǒng)中插入表情到光標(biāo)位置的代碼詳解
這篇文章主要介紹了在安卓系統(tǒng)中插入表情到光標(biāo)位置的代碼詳解,利用Java代碼在EditText控件中實(shí)現(xiàn),需要的朋友可以參考下2015-07-07
Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼,需要的朋友可以參考下2018-08-08
IDEA-Maven項(xiàng)目的jdk版本設(shè)置方法
我們需要設(shè)置jdk的版本,不然會(huì)提示導(dǎo)致語法錯(cuò)誤,這篇文章主要介紹了IDEA-Maven項(xiàng)目的jdk版本設(shè)置方法,小編覺得不錯(cuò),一起來了解一下2019-04-04

