日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

精盡Spring MVC源碼分析 - 一個請求的旅行過程

 頭號碼甲 2021-06-17

該系列文檔是本人在學(xué)習(xí) Spring MVC 的源碼過程中總結(jié)下來的,可能對讀者不太友好,請結(jié)合我的源碼注釋 Spring MVC 源碼分析 GitHub 地址 進(jìn)行閱讀

Spring 版本:5.1.14.RELEASE

該系列其他文檔請查看:《精盡 Spring MVC 源碼分析 - 文章導(dǎo)讀》

在上一篇《WebApplicationContext 容器的初始化》文檔中分析了 Spring MVC 是如何創(chuàng)建兩個容器的,其中創(chuàng)建Root WebApplicationContext 后,調(diào)用其refresh()方法會觸發(fā)刷新事件,完成 Spring IOC 初始化相關(guān)工作,會初始化各種 Spring Bean 到當(dāng)前容器中,該系列文檔暫不分析

我們先來了解一個請求是如何被 Spring MVC 處理的,由于整個流程涉及到的代碼非常多,所以本文的重點(diǎn)在于解析整體的流程,主要講解 DispatcherServlet 這個核心類,弄懂了這個流程后,才能更好的理解具體的源碼,回過頭再來看則會更加的豁然開朗

整體流程圖

SpingMVC-Process

Spring MVC 處理請求的流程大致如上圖所示

  1. 用戶的瀏覽器發(fā)送一個請求,這個請求經(jīng)過互聯(lián)網(wǎng)到達(dá)了我們的服務(wù)器。Servlet 容器首先接待了這個請求,并將該請求委托給 DispatcherServlet 進(jìn)行處理。
  2. DispatcherServlet 將該請求傳給了處理器映射組件 HandlerMapping,并獲取到適合該請求的 HandlerExecutionChain 攔截器和處理器對象。
  3. 在獲取到處理器后,DispatcherServlet 還不能直接調(diào)用處理器的邏輯,需要進(jìn)行對處理器進(jìn)行適配。處理器適配成功后,DispatcherServlet 通過處理器適配器 HandlerAdapter 調(diào)用處理器的邏輯,并獲取返回值 ModelAndView 對象。
  4. 之后,DispatcherServlet 需要根據(jù) ModelAndView 解析視圖。解析視圖的工作由 ViewResolver 完成,若能解析成功,ViewResolver 會返回相應(yīng)的 View 視圖對象。
  5. 在獲取到具體的 View 對象后,最后一步要做的事情就是由 View 渲染視圖,并將渲染結(jié)果返回給用戶。

以上就是 Spring MVC 處理請求的全過程,上面的流程進(jìn)行了一定的簡化,主要涉及到最核心的組件,還有許多其他組件沒有表現(xiàn)出來,不過這并不影響大家對主過程的理解。

組件預(yù)覽

在上一篇《WebApplicationContext 容器的初始化》文檔講述 FramworkServlet 的 onRefresh 方法時,該方法由 DispatcherServlet 去實現(xiàn),會初始化九大組件,如何初始化的這里暫時不展開討論,默認(rèn)會從 spring-webmvc 下面的 DispatcherServlet.properties 文件中讀取組件的實現(xiàn)類,感興趣可以先閱讀一下源碼

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多