SpringMVC執(zhí)行流程簡介

先介紹一下SpringMVC的執(zhí)行流程:

1:客戶端發(fā)起請求到DispatcherServlet(前端控制器)

2:前端控制器請求HandlerMapping(處理器映射器)查找 Handler

  根據(jù)xml配置哪自、注解進行查找

3:HandlerMapping(處理器映射器)向DispatcherServlet(前端控制器)返回Handler

4:DispatcherServlet(前端控制器)調(diào)用HandlerAdapter(處理器適配器)去執(zhí)行Handler

5:HandlerAdapter(處理器適配器)去執(zhí)行Handler

6:Handler執(zhí)行完成給HandlerAdapter(處理器適配器)返回ModelAndView

7:HandlerAdapter(處理器適配器)向前端控制器返回ModelAndView

  ModelAndView是springmvc框架的一個底層對象忿檩,包括 Model和view

8:前端控制器請求ResolverView(視圖解析器)去進行視圖解析

  根據(jù)邏輯視圖名解析成真正的視圖(jsp)

9:ResolverView(視圖解析器)向DispatcherServlet(前端控制器)返回View

10:DispatcherServlet(前端控制器)進行視圖渲染

???????? 視圖渲染將模型數(shù)據(jù)(在ModelAndView對象中)填充到request域

最后DispatcherServlet(前端控制器)向用戶響應(response)結(jié)果


1缘缚、用戶向服務器發(fā)送請求恨溜,請求被SpringMVC的前端控制器DispatcherServlet截獲。

2花竞、DispatcherServlet對請求的URL(統(tǒng)一資源定位符)進行解析加叁,得到URI(請求資源標識符),然后根據(jù)該URI迎卤,調(diào)用HandlerMapping獲得該Handler配置的所有相關的對象,包括Handler對象以及Handler對象對應的攔截器肛炮,這些對象都會被封裝到一個HandlerExecutionChain對象當中返回止吐。

3、DispatcherServlet根據(jù)獲得的Handler侨糟,選擇一個合適的HandlerAdapter碍扔。HandlerAdapter的設計符合面向?qū)ο笾械膯我宦氊熢瓌t,代碼結(jié)構(gòu)清晰秕重,便于維護不同,最為重要的是,代碼的可復制性高溶耘。HandlerAdapter會被用于處理多種Handler二拐,調(diào)用Handler實際處理請求的方法。

4凳兵、


提取請求中的模型數(shù)據(jù)百新,開始執(zhí)行Handler(Controller)。在填充Handler的入?yún)⑦^程中庐扫,根據(jù)配置饭望,spring將幫助做一些額外的工作


消息轉(zhuǎn)換:將請求的消息,如json形庭、xml等數(shù)據(jù)轉(zhuǎn)換成一個對象铅辞,將對象轉(zhuǎn)換為指定的響應信息。


數(shù)據(jù)轉(zhuǎn)換:對請求消息進行數(shù)據(jù)轉(zhuǎn)換萨醒,如String轉(zhuǎn)換成Integer斟珊、Double等。


數(shù)據(jù)格式化:對請求的消息進行數(shù)據(jù)格式化富纸,如將字符串轉(zhuǎn)換為格式化數(shù)字或格式化日期等囤踩。


數(shù)據(jù)驗證:驗證數(shù)據(jù)的有效性如長度、格式等晓褪,驗證結(jié)果存儲到BindingResult或Error中高职。


5、Handler執(zhí)行完成后辞州,向DispatcherServlet返回一個ModelAndView對象,ModelAndView對象中應該包含視圖名或視圖模型寥粹。

6变过、根據(jù)返回的ModelAndView對象埃元,選擇一個合適的ViewResolver(視圖解析器)返回給DispatcherServlet。

7媚狰、ViewResolver結(jié)合Model和View來渲染視圖岛杀。

8、將視圖渲染結(jié)果返回給客戶端崭孤。

以上8個步驟类嗤,DispatcherServlet、HandlerMapping辨宠、HandlerAdapter和ViewResolver等對象協(xié)同工作遗锣,完成SpringMVC請求—>響應的整個工作流程,這些對象完成的工作對于開發(fā)者來說都是不可見的嗤形,開發(fā)者并不需要關心這些對象是如何工作的精偿,開發(fā)者,只需要在Handler(Controller)當中完成對請求的業(yè)務處理赋兵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笔咽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子霹期,更是在濱河造成了極大的恐慌叶组,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件历造,死亡現(xiàn)場離奇詭異甩十,居然都是意外死亡,警方通過查閱死者的電腦和手機帕膜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門枣氧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人垮刹,你說我怎么就攤上這事达吞。” “怎么了荒典?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵酪劫,是天一觀的道長。 經(jīng)常有香客問我寺董,道長覆糟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任遮咖,我火速辦了婚禮滩字,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己麦箍,他們只是感情好漓藕,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挟裂,像睡著了一般享钞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诀蓉,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天栗竖,我揣著相機與錄音,去河邊找鬼渠啤。 笑死狐肢,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的埃篓。 我是一名探鬼主播处坪,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼架专!你這毒婦竟也來了同窘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤部脚,失蹤者是張志新(化名)和其女友劉穎想邦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體委刘,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡丧没,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了锡移。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呕童。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖淆珊,靈堂內(nèi)的尸體忽然破棺而出夺饲,到底是詐尸還是另有隱情,我是刑警寧澤施符,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布往声,位于F島的核電站,受9級特大地震影響戳吝,放射性物質(zhì)發(fā)生泄漏浩销。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一听哭、第九天 我趴在偏房一處隱蔽的房頂上張望慢洋。 院中可真熱鬧塘雳,春花似錦、人聲如沸且警。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斑芜。三九已至,卻和暖如春祟霍,著一層夾襖步出監(jiān)牢的瞬間杏头,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工沸呐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留醇王,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓崭添,卻偏偏與公主長得像寓娩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子呼渣,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

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