SpringMVC執(zhí)行流程

JavaEE.jpg

圖片有些是百度上面找到的,感覺蠻好的,如果侵權(quán)了請告訴我
首先說明一下,本章節(jié)是不會對SpringMVC里面的具體內(nèi)容做解釋.只是一個執(zhí)行流程而已,具體的解釋請看<a href="#">SpringMVC淺入深出系列</a>

SpringMVC執(zhí)行流程.png
SpringMVC執(zhí)行流程圖經(jīng)典版.png
執(zhí)行步驟(文字說明):
1盲憎、  用戶發(fā)送請求至前端控制器DispatcherServlet
2、  DispatcherServlet收到請求調(diào)用HandlerMapping處理器映射器。
3按摘、  處理器映射器找到具體的處理器漠其,生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet嘹承。
4拉庵、  DispatcherServlet調(diào)用HandlerAdapter處理器適配器
5射沟、  HandlerAdapter經(jīng)過適配調(diào)用具體的處理器(Controller辉巡,也叫后端控制器)恨憎。
6、  Controller執(zhí)行完成返回ModelAndView
7郊楣、  HandlerAdapter將controller執(zhí)行結(jié)果ModelAndView返回給DispatcherServlet
8憔恳、  DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器
9、  ViewReslover解析后返回具體View
10净蚤、 DispatcherServlet根據(jù)View進(jìn)行渲染視圖(即將模型數(shù)據(jù)填充至視圖中)钥组。
11、 DispatcherServlet響應(yīng)用戶

上面只是前人幫你做出的總結(jié),你真的了解過SpringMVC的執(zhí)行流程嗎?

好,接下來是我個人的理解,如果講錯,請幫我糾正,謝謝!

SpringMVC執(zhí)行流程

1.用戶發(fā)送一個請求
2.一個web項目啟動時,它會先去讀取它的配置文件web.xml

具體為什么,請移步到 <a >web.xml文件詳解</a>
因為SpringMVC控制頁面的請求和響應(yīng)都是通過前端控制器(DispatcherServlet)完成的,所以我們在web.xml里面配置了這個(配置內(nèi)容不解釋,有空先)

所以這步,我想表達(dá)的是為什么 DispatcherServlet會收到請求
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </init-param>
    <!-- 啟動級別 -->
    <load-on-startup>1</load-on-startup>
  </servlet>

Servlet.xml跟applicationContext.xml是有區(qū)別的,請移步到<a >web.xml 中spring-servlet.xml 和 application.xml 配置位置及含義 </a>


第一步.png
3.我們看一下DispatcherServlet這個類在干嘛
public class DispatcherServlet extends FrameworkServlet {}

我們是可以看到DispatcherServlet 是繼承于FrameworkServlet 這個接口,那么FrameworkServlet 本質(zhì)是一個Servlet,有興趣的,可以一直跳進(jìn)去看,這邊就不深入了.

好,在Servlet生命周期里面,Servlet第二步是在調(diào)用service方法
那我們看一下DispatcherServlet

證明DispatcherServlet 沒有service方法.png

我們?nèi)タ匆幌翭rameworkServlet

證明FrameworkServlet 有service方法.png

可以看到下面的源碼

protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String method = request.getMethod();
        if (method.equalsIgnoreCase(RequestMethod.PATCH.name())) {
            processRequest(request, response);
        }
        else {
            super.service(request, response);
        }
    }

我們來分析一下這個代碼

1.當(dāng)我們的請求進(jìn)來的時候,就會對請求的方法進(jìn)行判斷
如果方法的名稱不是RequestMethod.PATCH.name(),那么就會調(diào)用父類的service方法
HttpServlet里面的Service方法.png
2.javax.servlet.http.HttpServlet.service里面會根據(jù)你不同的請求,調(diào)用doGet,doPost方法,
  然后就會來到子類(org.springframework.web.servlet.FrameworkServlet)的doGet,doPost方法了
protected final void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
3.接下來就是進(jìn)入processRequest方法了,后面的流程為了簡便,我決定畫圖演示給大家看
(注意下面的代碼都是比較核心點的,有刪減,其他不是很重要的就不畫出來給大家看)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末今瀑,一起剝皮案震驚了整個濱河市程梦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌橘荠,老刑警劉巖屿附,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異砾医,居然都是意外死亡拿撩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門如蚜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來压恒,“玉大人影暴,你說我怎么就攤上這事√胶眨” “怎么了型宙?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伦吠。 經(jīng)常有香客問我妆兑,道長,這世上最難降的妖魔是什么毛仪? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任搁嗓,我火速辦了婚禮,結(jié)果婚禮上箱靴,老公的妹妹穿的比我還像新娘腺逛。我一直安慰自己,他們只是感情好衡怀,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布棍矛。 她就那樣靜靜地躺著,像睡著了一般抛杨。 火紅的嫁衣襯著肌膚如雪够委。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天怖现,我揣著相機(jī)與錄音茁帽,去河邊找鬼。 笑死屈嗤,一個胖子當(dāng)著我的面吹牛脐雪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恢共,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼璧亚!你這毒婦竟也來了讨韭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤癣蟋,失蹤者是張志新(化名)和其女友劉穎透硝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疯搅,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡濒生,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了幔欧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罪治。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡丽声,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出觉义,到底是詐尸還是另有隱情雁社,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布晒骇,位于F島的核電站霉撵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏洪囤。R本人自食惡果不足惜徒坡,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘤缩。 院中可真熱鬧喇完,春花似錦、人聲如沸款咖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铐殃。三九已至海洼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間富腊,已是汗流浹背坏逢。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工月而, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留惹谐,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓拭嫁,卻偏偏與公主長得像民假,于是被迫代替她去往敵國和親浮入。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

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