學習(順便手撕)SpringMVC

SpringMVC

SpringMVC這麼火,要不我們手撕一下吧~
_(¦3」∠)_

手撕是深層理解框架的必經之路。最近就手撕了一個比較具體而微型的SpringMVC核心功能(只是實現了接受請求時調用的邏輯)。發出來給大家分享分享~

瞭解SpringMVC

SpringMVC接受用戶請求時的調用邏輯順序如下:

在這裏插入圖片描述
步驟解讀:

  1. 用戶發送請求到前端控制器DispatcherServlet
  2. DispatcherServlet收到請求時調用HandlerMapping 處理器映射器
  3. HandlerMapping 找到具體的處理器,生成處理器對象和處理器攔截器(如果存在攔截器的話)一併返回給DispatcherServlet
  4. DispatcherServlet 調用具體的HandlerAdapter處理器適配器
  5. HandlerAdapter 經過適配調用具體的處理器 (Controller,也叫後端控制器)
  6. Controller 執行完成返回 ModelAndView
  7. HandlerAdapter 將controller執行結果ModelAndView返回給DispatcherServlet
  8. DispatcherServlet 將 ModelAndView 傳給 ViewReslover 視圖解析器
  9. ViewReslover 返回 View
  10. DispatcherServlet 根據View進行渲染視圖(即將模型數據填充至視圖中)
  11. DispatcherServlet 響應用戶

手撕簡單的SpringMVC

我已將SpringMVC的代碼放到GitHub,源碼中有比較詳細的註解,另外爲了方便大家理解,其中不乏一些重複的代碼沒有提取出來(特別是在DispatcherServlet),大家自己可以試着優化優化。
開發環境:Idea 2018.3

我的SpringMVC:LPB-Devin/MySpringMVC

老鐵滿意的話,可以幫Star下哇~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章