手寫MVC框架(一) 再出發

2022-01-26 02:28:13 字數 1613 閱讀 6534

前段時間把之前寫的dao框架(手寫dao框架(一)-從「1」開始)整理了一下,重構了一版。整理過程中看以前寫的**,只是為了了解實現,只是為了實現,**寫的有點粗糙。既然已經整理了dao框架,索性繼續整理一下mvc框架(所謂溫故知新也。

學習web的時候,一般都是先學servlet

通過servlet可以接受到http請求,並進行響應

這個時候,是不需要struts、springmvc等框架的

web應用伺服器

servlet容器

servlet需要執行在容器裡

1)服務啟動時載入servlet

2)第一次請求時

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,它會委託應用系統的其他模組負責對請求進行真正的處理

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註解

掃瞄填寫的uri

1)接收請求

2)分發請求

附腦圖:

下篇:手寫mvc框架(二)-**實現和使用示例

自己動手寫框架 一

php框架接觸有一段時間,主要是kohana和thinkphp。這兩個框架各有各的特色,總體來說kohana還是相對來說比較簡單,但是國內資料較少。簡單的,我把我的這個框架命名為demo.框架搭建第一步,總體目錄規劃 classes controller models views template ...

RPC 手寫乙個RPC框架

基於上一節的內容rpc 準備階段,自己實現乙個基本的rpc框架。public class rpcserverframereg 註冊服務,就是將介面和實現類儲存到上邊定義的serviceholder中,param serviceinte ce 介面 param impl 介面的實現類 throws i...

2019 再出發,擼起袖子加油幹,我們一直在路上!

這篇文章寫了好久好久,以至於我從2018年寫到了2019年,真的好久好久。原來寫一篇文章需要這麼長的時間,幸好有你們的相伴 關注 與支援。對於已經過去的2018年,民工哥之前也有過總結 說一件非常重要的事情 總的來說,大部分的目標都已經完成,小部分沒有完成或者說沒有能達到心理的預期水平。如果滿分10...