SpringBoot 請求對映原理分析

2021-10-22 14:31:10 字數 2825 閱讀 9704

我們在進行web開發中,每次發請求是如何找到哪個方法去處理這個請求的。springboot中,每乙個請求都會來到dispatcherservlet,底層還是使用springmvc,dispatcherservlet是處理所有請求的開始。

dispatcherservlet繼承了frameworkservlet,其中frameworkservlet中重寫了doget()、dopost()方法

.省略}

doget()、dopost()方法又呼叫了processrequest()方法

.省略...

}這個方法關鍵又呼叫了乙個doservice()方法去處理,找到這個方法,發現在frameworkservlet 中並沒有實現

那就去找子類dispatcherservlet中是否實現了這個方法,發現果然實現了

.省略...

.}其中關鍵是dodispatch()方法。

這裡總結一下原始碼呼叫方法的流程:乙個請求過來,首先到httpservlet的doget()方法,這個方法被frameworkservlet重寫,進而呼叫frameworkservlet中的processrequest()方法,然後呼叫了dispatcherservlet實現的doservice()方法,最後交給dodispatch()方法處理。

我們在debug模式下檢視處理流程,首先controller

@restcontroller

public

class

hellocontroller

("/hello"

)public string hello()

}

瀏覽器傳送乙個請求:http://localhost:8080/hello,找到斷點處:

我們繼續看dodispatch()方法的原始碼:

spring boot模板對映

寫小專案的時候vue就顯的很複雜,可以用對映模板簡單代替。後端 把資料對映到模板上 返回模板查詢 getall public string getall model model 呼叫方法 return redirect user getall 前端 接受模板並輸出 返回集合 userstat 是為了...

SpringBoot 路徑對映

在spring boot中整合thymeleaf後,我們知道thymeleaf的預設的html的路徑為classpath templates也就是resources templates,那如何訪問這個路徑下面的靜態頁面呢?假設我們要訪問乙個頁面為hello.html。spring.thymeleaf...

RequestMapping對映請求

2.1類定義處 提供初步的請求對映資訊。相對於web應用的根目錄 2.2 方法處 提供進一步的細分對映資訊。相對於類定義處的url。param1 引數必須包含param1 param1 引數不能包含param param1!value1 必須包含param,並且值不等於value1 必須包含para...