Spring_MVC_framework深入分析解析教材.doc

Spring_MVC_framework深入分析解析教材.doc

ID:51180959

大?。?1.50 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2020-03-20

Spring_MVC_framework深入分析解析教材.doc_第1頁(yè)
Spring_MVC_framework深入分析解析教材.doc_第2頁(yè)
Spring_MVC_framework深入分析解析教材.doc_第3頁(yè)
Spring_MVC_framework深入分析解析教材.doc_第4頁(yè)
Spring_MVC_framework深入分析解析教材.doc_第5頁(yè)
資源描述:

《Spring_MVC_framework深入分析解析教材.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、主題:SpringMVCframework深入分析之一--總體分析觀點(diǎn)1:在當(dāng)今的MVCframework里,似乎Webwork2逐漸成為主流,Webwork2+SpringFramework的組合變得越來(lái)越流行。這似乎意味著Spring自帶的MVCframework遠(yuǎn)比Webwork2差,所以大家紛紛用Webwork2來(lái)代替。確實(shí),Spring的MVCframework不算是整個(gè)Spring的核心部件,但它的威力卻超過(guò)了很多人的想象。很多人包括xiecc認(rèn)為Spring的MVCframework是非常

2、優(yōu)秀的,甚至比Webwork2更優(yōu)秀。下面列舉一下Spring的MVCframework在設(shè)計(jì)時(shí)做出的一些重要的決定,并將之和相關(guān)的MVCframework如Webwork2或struts進(jìn)行對(duì)比:一、Spring的整個(gè)MVC配置是基于IOC容器的與struts或webwork2相比,這是一個(gè)ms有點(diǎn)奇怪的決定,看一下SpringMVC的配置文件,最先看到的不是action或者form,而是一些有著特定名字的bean,Bean下面的配置是一些簡(jiǎn)單或有點(diǎn)復(fù)雜的屬性。我們看到的是機(jī)器更容易的數(shù)據(jù)結(jié)構(gòu),而不是

3、人更容易理解的元素。但是這恰恰是Spring的MVC強(qiáng)大的根源!因?yàn)樗呐渲镁褪荢pring的核心IOC容器的配置,這意味著所有IOC容器的威力都可以在這里展現(xiàn),我們可以為所欲為地對(duì)SpringMVC進(jìn)行擴(kuò)展和增強(qiáng),我們可以完成在其它MVCframwork中很多難以想象的任務(wù)。想擴(kuò)展新的URL映射方式嗎?要換一個(gè)themeResolver或LocalReolver的實(shí)現(xiàn)嗎?想在頁(yè)面中顯示新類型的View(比如說(shuō)RDF,呵呵,一個(gè)小秘密:xiecc是研究語(yǔ)義網(wǎng)的,雖然成天不務(wù)正業(yè),不寫論文,只寫八卦)?甚

4、至想直接在Controller里定義AOP嗎?這些對(duì)Spring的MVC來(lái)說(shuō)都是小菜一碟。我沒(méi)有仔細(xì)研究過(guò)Webwork2的擴(kuò)展機(jī)制,我知道通過(guò)Webwork2的interceptor機(jī)制,可以進(jìn)行很多的擴(kuò)展,甚至有一個(gè)簡(jiǎn)單簡(jiǎn)單的IOC容器。但不管它有多強(qiáng)大,提供了多少擴(kuò)展點(diǎn)。它的威力都很難和真正的IOC容器相比。而struts的plugin功能則是出名的濫,雖然它也提供了plugin機(jī)制。Spring采用IOC配置的另一個(gè)原因是使Spring的MVC與Spring的IOC容器的整合變得非常的容易。Sp

5、ring提供了與struts與webwork2的整合,但是這樣整合都需要在進(jìn)行間接的包裝,感覺(jué)總不是很自然。而且還會(huì)導(dǎo)致一個(gè)概念多個(gè)配置,webwork2就需要在Spring里配置bean,再配置自己的xwork文件。想象一下吧,我們的bean直接就是一個(gè)controller,直接可以完成MVC的所有任務(wù),這是多少爽的感覺(jué)。RodJohnson采用IOC容器來(lái)實(shí)現(xiàn)的另一個(gè)原因是這會(huì)減少好多開(kāi)發(fā)工作量。看一下urlMapping吧,它提供的property本身就是一個(gè)HashMap,只有配置完成,我們的b

6、ean里的數(shù)據(jù)就自然存在了,哈哈,好爽吧。不用象struts那樣解析XML,再把它的內(nèi)容一項(xiàng)一項(xiàng)地讀到HashMap里。雖然這樣的配置會(huì)有點(diǎn)怪異,但假如我們對(duì)Spring的IOC容器非常熟悉的話,會(huì)發(fā)現(xiàn)它非常的親切,也非常的簡(jiǎn)單。最后是一個(gè)簡(jiǎn)單的小秘密,Spring怎么知道某個(gè)bean的配置就是urlMapping?另一個(gè)bean的配置就是viewResolver?其實(shí)很簡(jiǎn)單,把所有的bean全部讀到內(nèi)存里,然后通過(guò)bean的名字或類型去找就行了。通過(guò)名字去找就是簡(jiǎn)單的getBean方法,通過(guò)類型去找則

7、使用了BeanFactoryUtils.beansOfTypeIncludingAncestors的靜態(tài)方法。二、Spring提供了明確的Model,View概念和相應(yīng)的數(shù)據(jù)結(jié)構(gòu)在Spring里有一個(gè)有趣的數(shù)據(jù)類型叫做ModelAndView,它只是簡(jiǎn)單地把要顯示的數(shù)據(jù)和顯示的結(jié)果封裝在一個(gè)類里。但是它卻提供了明確的MVC概念,尤其是model概念的強(qiáng)化,使程序的邏輯變得更清晰了。記得以前在Struts里寫程序里的時(shí)候,為了顯示數(shù)據(jù)經(jīng)常自己把東西放到HttpSession或HttpServletRequ

8、est里(或set到form里,雖然不太有用),這造成了model概念的模糊,而且也導(dǎo)致了struts與JSP頁(yè)面的緊耦合。假如我們要替換成Veloctiy,就得另外加一個(gè)plugin,因?yàn)樵趘elocity里數(shù)據(jù)是不需要不放到request里的。Webwork2里強(qiáng)調(diào)的是與Webframework解耦和它的command模式的簡(jiǎn)單性,因此在它的action里只有簡(jiǎn)單的get或set方法,假如返回?cái)?shù)據(jù),也只是簡(jiǎn)單地返回一個(gè)String。當(dāng)然

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。