亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

SpringMVCframework深入總體分析

2019-11-18 13:49:35
字體:
來源:轉載
供稿:網友

 在當今的MVC framework里,似乎Webwork2逐漸成為主流, Webwork2+SPRingFramework的組合變得越來越流行。這似乎意味著Spring自帶的MVC framework遠比Webwork2差,所以大家紛紛用Webwork2來代替。確實,Spring的MVC framework不算是整個Spring的核心部件,但它的威力卻超過了很多人的想象。很多人包括xiecc認為Spring的MVC framework是非常優秀的,甚至比Webwork2更優秀。


 下面列舉一下Spring的MVC framework在設計時做出的一些重要的決定,并將之和相關的MVC framework如Webwork2或struts進行對比:


 一、Spring的整個MVC配置是基于IOC容器的


 與struts或webwork2相比,這是一個ms有點希奇的決定,看一下Spring MVC的配置文件,最先看到的不是action或者form,而是一些有著特定名字的bean,Bean下面的配置是一些簡單或有點復雜的屬性。我們看到的是機器更輕易的數據結構,而不是人更輕易理解的元素。


 但是這恰恰是Spring的MVC強大的根源!因為它的配置就是Spring的核心IOC容器的配置,這意味著所有IOC容器的威力都可以在這里展現,我們可以為所欲為地對Spring MVC進行擴展和增強,我們可以完成在其它MVC framwork中很多難以想象的任務。想擴展新的URL映射方式嗎?要換一個themeResolver或LocalReolver的實現嗎?想在頁面中顯示新類型的View(比如說RDF,呵呵,一個小秘密:xiecc是研究語義網的,雖然成天不務正業,不寫論文,只寫八卦)?甚至想直接在Controller里定義AOP嗎?這些對Spring的MVC來說都是小菜一碟。


 我沒有仔細研究過Webwork2的擴展機制,我知道通過Webwork2的interceptor機制,可以進行很多的擴展,甚至有一個簡單簡單的IOC容器。但不管它有多強大,提供了多少擴展點。它的威力都很難和真正的IOC容器相比。而struts的plugin功能則是出名的濫,雖然它也提供了plugin機制。


 Spring采用IOC配置的另一個原因是使Spring的MVC與Spring的IOC容器的整合變得非常的輕易。Spring提供了與struts與webwork2的整合,但是這樣整合都需要在進行間接的包裝,感覺總不是很自然。而且還會導致一個概念多個配置,webwork2就需要在Spring里配置bean,再配置自己的xwork文件。想象一下吧,我們的bean直接就是一個controller,直接可以完成MVC的所有任務,這是多少爽的感覺。


 Rod Johnson采用IOC容器來實現的另一個原因是這會減少好多開發工作量??匆幌聈rlMapping吧,它提供的property本身就是一個HashMap,只有配置完成,我們的bean里的數據就自然存在了,哈哈,好爽吧。不用象struts那樣解析xml,再把它的內容一項一項地讀到HashMap里。


 雖然這樣的配置會有點怪異,但假如我們對Spring的IOC容器非常熟悉的話,會發現它非常的親切,也非常的簡單。


 最后是一個簡單的小秘密,Spring怎么知道某個bean的配置就是urlMapping?另一個bean的配置就是viewResolver?其實很簡單,把所有的bean全部讀到內存里,然后通過bean的名字或類型去找就行了。通過名字去找就是簡單的getBean方法,通過類型去找則使用了BeanFactoryUtils.beansOfTypeIncludingAncestors的靜態方法。


 二、Spring提供了明確的Model, View概念和相應的數據結構


 在Spring里有一個有趣的數據類型叫做ModelAndView,它只是簡單地把要顯示的數據和顯示的結果封裝在一個類里。但是它卻提供了明確的MVC概念,尤其是model概念的強化,使程序的邏輯變得更清楚了。


 記得以前在Struts里寫程序里的時候,為了顯示數據經常自己把東西放到Httpsession或HttpServletRequest里(或set到form里,雖然不太有用),這造成了model概念的模糊,而且也導致了struts與jsp頁面的緊耦合。假如我們要替換成Veloctiy,就得另外加一個plugin,因為在velocity里數據是不需要不放到request里的。


 Webwork2里強調的是與Web framework解耦和它的command模式的簡單性,因此在它的action里只有簡單的get或set方法,假如返回數據,也只是簡單地返回一個String.當然這樣的實現有它的好處,但是它淡化了model和view的概念。Rod Johnson認為Webwork2里的Action同時包含了Action和Model的職責,這樣一個類的職責太多,不是一個很好的設計。當然Jason Carreira不太認同這種觀點,因為Action里的model對象完成可以delege給其它對象。但不管怎樣,這種爭論的根源在于Webwork2里淡化了model, view甚至web的概念。仁者見仁,智者見智,最后的結果還是看個人喜歡好吧。


 三、Spring的Controller是Singleton的,或者是線程不安全的


 和Struts一樣,Spring的Controller是Singleton的,這意味著每個request過來,系統都會用原有的instance去處理,這樣導致了兩個結果:我們不用每次創建Controller,減少了對象創建和垃圾收集的時間;由于只有一個Controller的instance,當多個線程調用它的時候,它里面的instance變量不是線程安全的。




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
福利一区视频在线观看| 欧美日韩国产一区二区| 日韩免费在线免费观看| 欧美在线视频一区| 日韩在线观看高清| 91超碰中文字幕久久精品| 亚洲欧洲成视频免费观看| 日韩精品免费在线视频观看| 久久不射电影网| 欧美夫妻性生活视频| 日韩电视剧免费观看网站| 久久精品人人爽| 最近中文字幕mv在线一区二区三区四区| 欧美做爰性生交视频| 欧美一区二区大胆人体摄影专业网站| 日韩美女视频免费在线观看| 97久久久免费福利网址| 亚洲人成亚洲人成在线观看| 国产色视频一区| 久久69精品久久久久久久电影好| 一个人看的www久久| 久久97精品久久久久久久不卡| 亚洲a在线观看| 久久久国产精品免费| 97视频免费看| 国产亚洲精品激情久久| 亚洲精品白浆高清久久久久久| 91成人性视频| 亚洲第一国产精品| 日韩av在线免费观看一区| 亚洲综合中文字幕在线| 亚洲国产一区自拍| 亚洲国产精品va在线| 欧美一级大片在线免费观看| 国产va免费精品高清在线| 国产亚洲视频在线观看| 992tv成人免费影院| 亚洲精品国产精品国产自| 国模gogo一区二区大胆私拍| 日韩小视频在线| 久久天堂电影网| 国产精品色悠悠| 国产69精品99久久久久久宅男| 美女扒开尿口让男人操亚洲视频网站| 国产91色在线播放| 91视频8mav| 中文字幕在线观看日韩| 国产精品v片在线观看不卡| 亚洲a一级视频| 欧美激情视频在线| 欧美疯狂做受xxxx高潮| 国产精品视频精品视频| 亚洲精品久久久一区二区三区| 色在人av网站天堂精品| 欧美激情中文字幕乱码免费| 久久久久久久久国产| 久操成人在线视频| 久久久久亚洲精品| 欧美乱妇高清无乱码| 中文字幕免费精品一区高清| 久久国产色av| 91网站在线看| 亚洲精品网站在线播放gif| 中文字幕精品—区二区| 亚洲国产福利在线| 精品国产福利在线| 亚洲人成五月天| 亚洲va国产va天堂va久久| 欧美激情2020午夜免费观看| 亚洲最大av在线| 91tv亚洲精品香蕉国产一区7ujn| 色偷偷偷综合中文字幕;dd| 成人自拍性视频| 色综合久久悠悠| 欧美精品免费看| 国产午夜精品麻豆| 九九热这里只有在线精品视| 国产日韩中文在线| 亚洲黄在线观看| 国产黑人绿帽在线第一区| 国产精品扒开腿做| 成人免费在线视频网站| 亚洲欧美变态国产另类| 国产精品嫩草视频| 国语自产偷拍精品视频偷| 欧美成人一二三| 九九热r在线视频精品| 亚洲美女免费精品视频在线观看| 在线电影欧美日韩一区二区私密| 91亚洲精品在线观看| 亚洲图片欧美日产| 欧美精品999| 亚洲va码欧洲m码| 色悠久久久久综合先锋影音下载| 久久视频国产精品免费视频在线| 久久久久久久久91| 亚洲最新av网址| 日韩人在线观看| 欧美乱妇高清无乱码| 欧美综合在线观看| 欧美精品久久久久a| 精品亚洲一区二区三区在线观看| 亚洲高清免费观看高清完整版| 国产一区二区三区在线观看网站| 国产欧美va欧美va香蕉在线| 国产精品一区专区欧美日韩| 91久久久久久久久久久久久| 欧美理论电影在线观看| 欧美在线不卡区| 亚洲欧美在线看| 日韩在线观看免费网站| 日日狠狠久久偷偷四色综合免费| 一区二区三区视频在线| 国产精品永久免费在线| 91精品国产综合久久香蕉的用户体验| 国产精品国产亚洲伊人久久| 91视频国产精品| 亚洲欧美日韩国产精品| 奇米成人av国产一区二区三区| 日韩在线观看网站| 中文字幕在线成人| 日产精品久久久一区二区福利| 欧洲中文字幕国产精品| 欧美日韩精品在线视频| 欧美一乱一性一交一视频| 亚洲精品综合久久中文字幕| 欧美日韩精品在线播放| 国产+成+人+亚洲欧洲| 中文字幕日韩av电影| 久久综合色88| 日韩欧美在线看| 日韩精品有码在线观看| 欧美极品美女电影一区| 国产精品电影久久久久电影网| 91精品综合久久久久久五月天| 国产成人精品久久二区二区91| 日韩动漫免费观看电视剧高清| 在线精品高清中文字幕| 26uuu另类亚洲欧美日本一| 欧美在线一级视频| 国产在线视频欧美| 亚洲黄页网在线观看| 精品一区二区三区电影| 欧美丝袜第一区| 亚洲精品网址在线观看| 亚洲精品一区二区三区婷婷月| 国产美女精彩久久| 中文字幕久久亚洲| 日本不卡视频在线播放| 在线精品高清中文字幕| 午夜精品久久久久久久99黑人| 国产成人精品国内自产拍免费看| 亚洲国产精品久久久久久| yellow中文字幕久久| 国产精品一区二区av影院萌芽| 97香蕉超级碰碰久久免费软件| 欧美性jizz18性欧美| 国产精品入口夜色视频大尺度| 日本精品免费一区二区三区| 欧美孕妇与黑人孕交| 亚洲日本中文字幕免费在线不卡| 日韩成人激情影院| 欧美午夜视频一区二区| 亚洲天堂2020|