Spring架構(gòu)

?Spring架構(gòu)

1.框架結(jié)構(gòu) 如圖:


2.架構(gòu)流程

?1、用戶發(fā)送請求至前端控制器DispatcherServlet

?2窍仰、DispatcherServlet收到請求調(diào)用HandlerMapping處理器映射器礼殊。

?3晶伦、處理器映射器根據(jù)請求url找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)并 返回給DispatcherServlet族沃。

?4、DispatcherServlet通過HandlerAdapter處理器適配器調(diào)用處理器

?5常空、執(zhí)行處理器(Controller漓糙,也叫后端控制器)烘嘱。

?6、Controller執(zhí)行完成返回ModelAndView

?7醉鳖、HandlerAdapter將controller執(zhí)行結(jié)果ModelAndView返回給DispatcherServlet

?8哮内、DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器

?9牍蜂、ViewReslover解析后返回具體View

10、DispatcherServlet對View進行渲染視圖(即將模型數(shù)據(jù)填充至視圖中)。

11从绘、DispatcherServlet響應(yīng)用戶

3.框架組件

以下組件通常使用框架提供實現(xiàn):

DispatcherServlet:前端控制器是牢,用戶請求到達前端控制器驳棱,它就相當(dāng)于mvc模式中的c,dispatcherServlet是整個流程控制的中心驻债,由它調(diào)用其它組件處理用戶的請求合呐,dispatcherServlet的存在降低了組件之間的耦合性笙以。

HandlerMapping:處理器映射器,HandlerMapping負責(zé)根據(jù)用戶請求url找到Handler即處理器恨闪,springmvc提供了不同的映射器實現(xiàn)不同的映射方式放坏,例如:配置文件方式轻姿,實現(xiàn)接口方式互亮,注解方式等。

Handler:處理器炊昆,Handler 是繼DispatcherServlet前端控制器的后端控制器威根,在DispatcherServlet的控制下Handler對具體的用戶請求進行處理凤巨。

由于Handler涉及到具體的用戶業(yè)務(wù)請求,所以一般情況需要程序員根據(jù)業(yè)務(wù)需求開發(fā)Handler洛搀。

HandlAdapter:處理器適配器敢茁,通過HandlerAdapter對處理器進行執(zhí)行,這是適配器模式的應(yīng)用留美,通過擴展適配器可以對更多類型的處理器進行執(zhí)行彰檬。

ViewResolver:視圖解析器,View Resolver負責(zé)將處理結(jié)果生成View視圖谎砾,View Resolver首先根據(jù)邏輯視圖名解析成物理視圖名即具體的頁面地址逢倍,再生成View視圖對象,最后對View進行渲染將處理結(jié)果通過頁面展示給用戶景图。

View:視圖较雕,springmvc框架提供了很多的View視圖類型的支持,包括:jstlView挚币、freemarkerView宛蚓、pdfView等远舅。我們最常用的視圖就是jsp。

說明:在springmvc的各個組件中蚤吹,處理器映射器、處理器適配器、視圖解析器稱為springmvc的三大組件秉沼。需要用戶開發(fā)的組件有handler、view

4棘捣、默認加載的組件


組件掃描器:

使用組件掃描器省去在spring容器配置每個Controller類的繁瑣。使用<context:component-scan>自動掃描標記@Controller的控制器類邑彪,在springmvc.xml配置文件中配置如下:

<!-- 配置controller掃描包,多個包之間用,分隔?-->

<context:component-scan?base-package="com.bigdata.springmvc.controller"?/>

注解映射器和適配器

配置處理器映射器

注解式處理器映射器,對類中標記了@ResquestMapping的方法進行映射篮迎。根據(jù)@ResquestMapping定義的url匹配@ResquestMapping標記的方法,匹配成功返回HandlerMethod對象給前端控制器难裆。

HandlerMethod對象中封裝url對應(yīng)的方法Method。

從spring3.1版本開始症虑,廢除了DefaultAnnotationHandlerMapping的使用,推薦使用RequestMappingHandlerMapping完成注解式處理器映射。

在springmvc.xml配置文件中配置如下:

<!-- 配置處理器映射器 -->

<bean

class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"?/>

注解描述:

@RequestMapping:定義請求url到處理器功能方法的映射

配置處理器適配器

注解式處理器適配器沈条,對標記@ResquestMapping的方法進行適配。

從spring3.1版本開始月而,廢除了AnnotationMethodHandlerAdapter的使用瞻凤,推薦使用RequestMappingHandlerAdapter完成注解式處理器適配肝集。

在springmvc.xml配置文件中配置如下:

<!-- 配置處理器適配器 -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"?/>

注解驅(qū)動

直接配置處理器映射器和處理器適配器比較麻煩,可以使用注解驅(qū)動來加載勉痴。

SpringMVC使用<mvc:annotation-driven>自動加載RequestMappingHandlerMapping和RequestMappingHandlerAdapter

可以在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解處理器和適配器的配置胸嘴。

<!-- 注解驅(qū)動 -->

<mvc:annotation-driven />

5.視圖解析器

視圖解析器使用SpringMVC框架默認的InternalResourceViewResolver,這個視圖解析器支持JSP視圖解析绑青。在springmvc.xml配置文件中配置如下:

<!-- Example: prefix="/WEB-INF/jsp/", suffix=".jsp", viewname="test" ->

"/WEB-INF/jsp/test.jsp" -->

<!-- 配置視圖解析器 -->

<bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<!-- 配置邏輯視圖的前綴 -->

<property?name="prefix"?value="/WEB-INF/jsp/"?/>

<!-- 配置邏輯視圖的后綴 -->

<property?name="suffix"?value=".jsp"?/>

</bean>

邏輯視圖名需要在controller中返回ModelAndView指定邪乍,比如邏輯視圖名為ItemList否纬,則最終返回的jsp視圖地址:

“WEB-INF/jsp/itemList.jsp”

最終jsp物理地址:前綴+邏輯視圖名+后綴

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弃理,隨后出現(xiàn)的幾起案子炬转,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巧涧,死亡現(xiàn)場離奇詭異占锯,居然都是意外死亡疑俭,警方通過查閱死者的電腦和手機哩照,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人豪娜,你說我怎么就攤上這事鸣奔×彰ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵鞭衩,是天一觀的道長坯台。 經(jīng)常有香客問我咪啡,道長愁溜,這世上最難降的妖魔是什么渐扮? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任帕棉,我火速辦了婚禮即纲,結(jié)果婚禮上拔稳,老公的妹妹穿的比我還像新娘轻绞。我一直安慰自己,他們只是感情好既棺,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著趟畏,像睡著了一般沃琅。 火紅的嫁衣襯著肌膚如雪年碘。 梳的紋絲不亂的頭發(fā)上屿衅,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天蔗彤,我揣著相機與錄音潮饱,去河邊找鬼中狂。 笑死,一個胖子當(dāng)著我的面吹牛扑毡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼隙畜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起倍试,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逸雹,沒想到半個月后赂弓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缔逛,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡备埃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了褐奴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片按脚。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖敦冬,靈堂內(nèi)的尸體忽然破棺而出辅搬,到底是詐尸還是另有隱情,我是刑警寧澤脖旱,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布堪遂,位于F島的核電站,受9級特大地震影響萌庆,放射性物質(zhì)發(fā)生泄漏溶褪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一践险、第九天 我趴在偏房一處隱蔽的房頂上張望猿妈。 院中可真熱鬧吹菱,春花似錦、人聲如沸彭则。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俯抖。三九已至输瓜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芬萍,已是汗流浹背尤揣。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柬祠,地道東北人芹缔。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像瓶盛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子示罗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容