Java中struts2和spring MVC的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
1、Struts2是類級(jí)別的攔截, 一個(gè)類對(duì)應(yīng)一個(gè)request上下文,SpringMVC是方法級(jí)別的攔截,一個(gè)方法對(duì)應(yīng)一個(gè)request上下文,而方法同時(shí)又跟一個(gè)url對(duì)應(yīng),所以說從架構(gòu)本身上SpringMVC就容易實(shí)現(xiàn)restful url,而struts2的架構(gòu)實(shí)現(xiàn)起來要費(fèi)勁,因?yàn)镾truts2中Action的一個(gè)方法可以對(duì)應(yīng)一個(gè)url,而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標(biāo)識(shí)其所屬方法了。
2、SpringMVC的方法之間基本上獨(dú)立的,獨(dú)享request response數(shù)據(jù),請(qǐng)求數(shù)據(jù)通過參數(shù)獲取,處理結(jié)果通過ModelMap交回給框架,方法之間不共享變量。
3、由于Struts2需要針對(duì)每個(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)去,使用起來也相對(duì)不方便。
7、SpringMVC驗(yàn)證支持JSR303,處理起來相對(duì)更加靈活方便,而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性能高于Struts2。
11、SpringMVC可以認(rèn)為已經(jīng)100%零配置。
總結(jié)
以上所述是小編給大家介紹的struts2和spring MVC的區(qū)別,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 詳談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é)記錄
- 簡(jiǎn)單了解SpringMVC與Struts2的區(qū)別
相關(guān)文章
java中將一個(gè)List等分成n個(gè)list的工具方法(推薦)
下面小編就為大家?guī)硪黄猨ava中將一個(gè)List等分成n個(gè)list的工具方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
java使用Hex編碼解碼實(shí)現(xiàn)Aes加密解密功能示例
這篇文章主要介紹了java使用Hex編碼解碼實(shí)現(xiàn)Aes加密解密功能,結(jié)合完整實(shí)例形式分析了Aes加密解密功能的定義與使用方法,需要的朋友可以參考下2017-01-01
Spring?Boot日志SLF4J和Logback示例詳解
這篇文章主要介紹了Spring?Boot日志SLF4J和Logback詳解,Logback相比于Log4j,性能提高了10倍以上的性能,占用的內(nèi)存也變小了,并且文檔十分詳細(xì),推薦使用Slf4j+Logback,需要的朋友可以參考下2023-07-07
導(dǎo)入項(xiàng)目出現(xiàn)Java多個(gè)工程相互引用異常A cycle was detected in the build path o
今天小編就為大家分享一篇關(guān)于導(dǎo)入項(xiàng)目出現(xiàn)Java多個(gè)工程相互引用異常A cycle was detected in the build path of project的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12
Java之Spring認(rèn)證使用Profile配置運(yùn)行環(huán)境講解
這篇文章主要介紹了Java之Spring認(rèn)證使用Profile配置運(yùn)行環(huán)境講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
Java 使用 HttpClient 發(fā)送 GET請(qǐng)求和 POST請(qǐng)求
本文主要介紹了Java 使用 HttpClient 發(fā)送 GET請(qǐng)求和 POST請(qǐng)求,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
SpringMVC中DispatcherServlet的HandlerMapping詳解
這篇文章主要介紹了SpringMVC中DispatcherServlet的HandlerMapping詳解,上回說的Handler,我們說是處理特定請(qǐng)求的,也就是說,不是所有的請(qǐng)求都能處理,那么問題來了,我們?cè)踔滥膫€(gè)請(qǐng)求是由哪個(gè)Handler處理的呢,需要的朋友可以參考下2023-10-10

