我們在進行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...