為開發團隊選擇一款優秀的mvc框架是件難事兒,在眾多可行的方案中決擇需要很高的經驗和水平。你的一個決定會影響團隊未來的幾年。要考慮方面太多:
1、簡單易用,以提高開發效率。使小部分的精力在框架上,大部分的精力放在業務上。
2、性能優秀,這是一個最能吸引眼球的話題。
3、盡量使用大眾的框架(避免使用小眾的、私有的框架),新招聘來的開發人員有一些這方面技術積累,減低人員流動再適應的影響。
如果你還在為這件事件發愁,本文最適合你了。選擇spring mvc吧。
spring mvc是當前最優秀的mvc框架,自從spring 2.5版本發布后,由于支持注解配置,易用性有了大幅度的提高。spring 3.0更加完善,實現了對struts 2的超越。現在越來越多的開發團隊選擇了spring mvc。
struts2也是非常優秀的mvc構架,優點非常多比如良好的結構,攔截器的思想,豐富的功能。但這里想說的是缺點,struts2由于采用了值棧、ognl表達式、struts2標簽庫等,會導致應用的性能下降,應避免使用這些功能。而struts2的多層攔截器、多實例action性能都很好。
spring3 mvc的優點:
1、spring3 mvc使用簡單,學習成本低。學習難度小于struts2,struts2用不上的多余功能太多。呵呵,當然這不是決定因素。
2、spring3 mvc很容易就可以寫出性能優秀的程序,struts2要處處小心才可以寫出性能優秀的程序(指mvc部分)
3、spring3 mvc的靈活是你無法想像的,spring框架的擴展性有口皆碑,spring3 mvc當然也不會落后,不會因使用了mvc框架而感到有任何的限制。
struts2的眾多優點:
1、老牌的知名框架,從struts1起積累了大量用戶群體。技術文檔豐富。
2、其它方面略... (呵呵,是不是不公平?)
spring的官方下載網址是:http://www.springsource.org/download (本文使用是的spring 3.0.5版本)
二、核心類與接口:
先來了解一下,幾個重要的接口與類。現在不知道他們是干什么的沒關系,先混個臉熟,為以后認識他們打個基礎。
dispatcherservlet -- 前置控制器
handlermapping接口 -- 處理請求的映射
handlermapping接口的實現類:
simpleurlhandlermapping 通過配置文件,把一個url映射到controller
defaultannotationhandlermapping 通過注解,把一個url映射到controller類上
handleradapter接口 -- 處理請求的映射
annotationmethodhandleradapter類,通過注解,把一個url映射到controller類的方法上
controller接口 -- 控制器
由于我們使用了@controller注解,添加了@controller注解注解的類就可以擔任控制器(action)的職責,
所以我們并沒有用到這個接口。
handlerinterceptor 接口--攔截器
無圖,我們自己實現這個接口,來完成攔截的器的工作。
viewresolver接口的實現類
urlbasedviewresolver類 通過配置文件,把一個視圖名交給到一個view來處理
internalresourceviewresolver類,比上面的類,加入了jstl的支持
view接口
jstlview類
localresolver接口
核心流程圖: