Spring MVC 處理乙個請求的流程

2021-10-19 05:23:38 字數 2529 閱讀 3308

乙個請求從客戶端發出到達伺服器,然後被處理的整個過程其實是非常複雜的。本部落格主要介紹請求到達伺服器被核心元件dispatcherservlet處理的整理流程(不包括filter的處理流程)。

1. 處理流程分析

servlet處理乙個請求時會呼叫service()方法,所以dispatcherservlet處理請求的方式也是從service()方法開始(debug的話建議從dispatcherservlet的service方法開始debug)。frameworkservlet重寫了httpservlet的service方法,這個service方法後面又呼叫了frameworkservlet的processrequest()方法,processrequest()呼叫了dispatcherservlet的doservice()方法,最後呼叫到dispatcherservlet的dodispatcher()方法。整合處理請求的方法呼叫流程如上,下面看下**:12

}再看看frameworkservlet的processrequest()方法。12

doservice()方法的具體內容會在後面講到,這邊描述下dodispatcher()的內容,

總結下spring mvc處理乙個請求的過程:

3、 dispatcherservlet——>handleradapter,handleradapter將會把處理器包裝為介面卡,從而支援多種型別的處理器,即介面卡設計模式的應用,從而很容易支援很多態別的處理器;

4、 handleradapter——>處理器功能處理方法的呼叫,handleradapter將會根據適配的結果呼叫真正的處理器的功能處理方法,完成功能處理;並返回乙個modelandview物件(包含模型資料、邏輯檢視名);

5、 modelandview的邏輯檢視名——> viewresolver,viewresolver將把邏輯檢視名解析為具體的view,通過這種策略模式,很容易更換其他檢視技術;

6、 view——>渲染,view會根據傳進來的model模型資料進行渲染,此處的model實際是乙個map資料結構,因此很容易支援其他檢視技術;

7、返回控制權給dispatcherservlet,由dispatcherservlet返回響應給使用者,到此乙個流程結束。

2. 請求流程圖

還是這個圖比較清楚。發現根據**不太能把這個流程說清楚。而且整個流程很長,**很多,我就不貼**了。這裡根據這個圖再把整個流程中元件的功能總結下:

handleradapter元件,這個元件的主要作用是用來對handlermethod中引數的轉換,對方法的執行,以及對返回值的轉換等等。這裡面涉及的細節就很多了,包括handlermethodargumentresolver、handlermethodreturnvaluehandler 、requestresponsebodymethodprocessor 、和httpmessageconvert等元件。

當handleradapter元件執行完成之後會得到乙個modleandview元件,這個元件代表檢視模型。

得到modleandview後會執行***的posthandle方法。

如果在上面的執行過程中發生任何異常,會由handlerexceptionresolver進行統一處理。

最後模型解析器會對上面的到的modleandview進行解析,得到乙個乙個view返回給客戶端。在返回客戶端之前還會執行***的aftercompletion方法。

Spring MVC 處理乙個請求的流程分析

spring mvc是spring系列框架中使用頻率最高的部分。不管是spring boot還是傳統的spring專案,只要是web專案都會使用到spring mvc部分。因此程式設計師一定要熟練掌握mvc部分。本篇部落格簡要分析spring mvc處理乙個請求的流程。乙個請求從客戶端發出到達伺服器...

spring mvc請求處理流程

從web.xml中 servlet的配置開始,根據servlet攔截的url parttern,來進行請求 spring mvc工作流程圖 圖一 圖二 spring工作流程描述 1.使用者向伺服器傳送請求,請求被spring 前端控制servelt dispatcherservlet捕獲 3.dis...

SpringMVC處理請求流程

springmvc核心處理流程 3 handleradapter處理器介面卡,處理一些功能請求,返回乙個modelandview物件 包括模型資料 邏輯檢視名 4 viewresolver視 析器,先根據modelandview中設定的view解析具體檢視 5 然後再將model模型中的資料渲染到v...