基於Nettty打造自己的MVC服務器

最近開始折騰Netty,體驗下NIO編程。既然學習了,就要做點東西出來,要不然不容易掌握學到的東西。在Netty的官方demo上都有各種case的sample,打造Http服務器的核心代碼就是從Sample中獲取的。

所有代碼已上傳到github上,地址:點我跳轉

Netty的基本概念就不贅述了,主要說明下如何使用。

主題:基於Netty打造自己的HttpMVC服務器
主要思路:基於SpringMVC框架實現原理進行代碼分層,主要組件有:HandlerRequestAdapter,HandlerRequestMapping,ViewResolver。

  • HandlerRequestAdapter 請求處理
  • HandlerRequestMapping 請求url映射,獲取到HandlerRequestAdapter
  • ViewResolver 視圖解析器,通過HandlerRequestAdapter 返回的ModelAndView渲染頁面

項目執行流程簡要說明:

  1. 調用NettyHttpServer.main方法,啓動Netty服務
  2. 客戶訪問url後,Netty回調HttpServerHandler.channelRead0
  3. 通過url,到HandlerRequestMapping找到對應的HandlerRequestAdapter
  4. 調用HandlerRequestAdapter.handle方法,進行業務處理後。返回ModelAndView
  5. ViewResolver 通過ModelAndView解析頁面地址,獲取到指定文件後返回頁面

已實現功能:

  • 靜態文件訪問
  • 表單提交處理
  • 重定向

至於其他功能,比如模板,session,請求轉發等常用web服務器功能,學習到的時候再添加。

uml圖(好久沒用過uml了,有不對的地方歡迎指正)
這裏寫圖片描述
項目啓動後,訪問localhost:8080:
這裏寫圖片描述
點擊表單提交後,後臺會輸出參數信息,頁面跳轉到登錄結果頁面
這裏寫圖片描述

服務器基本的功能實現了,就需要研究下 HttpServerCodec,HttpObjectAggregator,ChunkedWriteHandler三個類實現原理,等後面有時間在研究。

發佈了157 篇原創文章 · 獲贊 92 · 訪問量 58萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章