前段時間把以前寫的DAO框架(手寫DAO框架(一)-從「1」開始)整理了一下,重構了一版。整理過程當中看之前寫的代碼,只是爲了瞭解實現,只是爲了實現,代碼寫的有點粗糙。既然已經整理了DAO框架,索性繼續整理一下MVC框架(https://github.com/shuimutong/zxmvc.git),所謂溫故知新也。html
學習web的時候,通常都是先學Servletgit
經過Servlet能夠接受到http請求,並進行響應github
這個時候,是不須要struts、SpringMVC等框架的web
web應用服務器瀏覽器
servlet容器tomcat
servlet須要運行在容器裏服務器
1)服務啓動時加載servletmvc
2)第一次請求時app
2.1)實例化servlet框架
2.2)執行init方法
3)調用service方法,判斷請求的類型
3.1)get類型則調用doGet方法
3.2)post類型則調用doPost方法
4)服務重啓或者關閉時,調用destroy方法
Model(模型)
應用程序中用於處理應用程序數據邏輯的部分
View(視圖)
應用程序中處理數據顯示的部分
Controller(控制器)
應用程序中處理用戶交互的部分
Controller接收請求,而後返回ModelAndView
1)SpringMVC將全部的請求提交給DispatcherServlet,它會委託應用系統的其餘模塊負責對請求進行真正的處理
2)DispatcherServlet查詢HandleMapping,找處處理請求的Controller
3)DispatcherServlet將請求提交到目標Controller
4)Controller進行業務邏輯處理後,返回一個ModelAndView
5)DispatcherServlet查詢ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象
6)將頁面渲染到瀏覽器端
1)關於視圖解析器
以前的頁面常常用到freeMarker、jsp等,須要通過視圖解析器解析成Html
我的以爲上面兩種方式,還不如直接html,經過js刷頁面來的直觀
本身寫MVC框架,能夠先實現MC,V暫時用html
2)主要功能
封裝了servlet
IOC:實例管理
AOP:動態代理、cglib
相似DispatcherServlet
服務初始時掃描全部URI,並放入一個URIMAP中
定義一個Servlet來接收全部請求
根據請求URL匹配URIMAP中對應的Controller
將請求分發給對應的Controller
註解形式
定義須要的註解
服務啓動時,掃描註解的類
將註解的類根據依賴(經過反射)進行實例化
暫緩實現
1)各層註解
Controller、Service、Repository、Component
2)自動注入註解
Autowired
3)URI註解
RequestMapping
掃描填寫的URI
1)接收請求
2)分發請求
附腦圖: