這篇文章將為大家詳細(xì)講解有關(guān)springMVC和struts2的區(qū)別是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括貴港網(wǎng)站建設(shè)、貴港網(wǎng)站制作、貴港網(wǎng)頁(yè)制作以及貴港網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,貴港網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到貴港省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Spring MVC和Struts2的區(qū)別:
1. 機(jī)制:
spring mvc的入口是servlet,而struts2是filter(這里要指出,filter和servlet是不同的。以前認(rèn)為filter是servlet的一種特殊),這樣就導(dǎo)致了二者的機(jī)制不同,這里就牽涉到servlet和filter的區(qū)別了。
2. 性能:
spring會(huì)稍微比struts快。spring mvc是基于方法的設(shè)計(jì),而sturts是基于類,每次發(fā)一次請(qǐng)求都會(huì)實(shí)例一個(gè)action,每個(gè)action都會(huì)被注入屬性.
而spring基于方法,粒度更細(xì),但要小心把握像在servlet控制數(shù)據(jù)一樣。spring3 mvc是方法級(jí)別的攔截,攔截到方法后根據(jù)參數(shù)上的注解,把request數(shù)據(jù)注入進(jìn)去,在spring3 mvc中,一個(gè)方法對(duì)應(yīng)一個(gè)request上下文。
而struts2框架是類級(jí)別的攔截,每次來(lái)了請(qǐng)求就創(chuàng)建一個(gè)Action,然后調(diào)用setter getter方法把request中的數(shù)據(jù)注入;struts2實(shí)際上是通過(guò)setter getter方法與request打交道的;struts2中,一個(gè)Action對(duì)象對(duì)應(yīng)一個(gè)request上下文。
3. 參數(shù)傳遞:
struts是在接受參數(shù)的時(shí)候,可以用屬性來(lái)接受參數(shù),這就說(shuō)明參數(shù)是讓多個(gè)方法共享的。
4. 設(shè)計(jì)思想上:
struts更加符合oop的編程思想, spring就比較謹(jǐn)慎,在servlet上擴(kuò)展。
5. intercepter的實(shí)現(xiàn)機(jī)制:
struts有以自己的interceptor機(jī)制,spring mvc用的是獨(dú)立的AOP方式。這樣導(dǎo)致struts的配置文件量還是比spring mvc大,雖然struts的配置能繼承,所以我覺(jué)得論使用上來(lái)講,spring mvc使用更加簡(jiǎn)潔,開(kāi)發(fā)效率Spring MVC確實(shí)比struts2高。
spring mvc是方法級(jí)別的攔截,一個(gè)方法對(duì)應(yīng)一個(gè)request上下文,而方法同時(shí)又跟一個(gè)url對(duì)應(yīng),所以說(shuō)從架構(gòu)本身上spring3 mvc就容易實(shí)現(xiàn)restful url。
struts2是類級(jí)別的攔截,一個(gè)類對(duì)應(yīng)一個(gè)request上下文;實(shí)現(xiàn)restful url要費(fèi)勁,因?yàn)閟truts2 action的一個(gè)方法可以對(duì)應(yīng)一個(gè)url;而其類屬性卻被所有方法共享,這也就無(wú)法用注解或其他方式標(biāo)識(shí)其所屬方法了。
spring3 mvc的方法之間基本上獨(dú)立的,獨(dú)享request response數(shù)據(jù),請(qǐng)求數(shù)據(jù)通過(guò)參數(shù)獲取,處理結(jié)果通過(guò)ModelMap交回給框架方法之間不共享變量,而struts2搞的就比較亂,雖然方法之間也是獨(dú)立的,但其所有Action變量是共享的,這不會(huì)影響程序運(yùn)行,卻給我們編碼,讀程序時(shí)帶來(lái)麻煩。
6. 另外,spring3 mvc的驗(yàn)證也是一個(gè)亮點(diǎn),支持JSR303,處理ajax的請(qǐng)求更是方便,只需一個(gè)注解@ResponseBody ,然后直接返回響應(yīng)文本即可。
關(guān)于springMVC和struts2的區(qū)別是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。