基於Nettty打造本身的MVC服務器

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

全部代碼已上傳到github上,地址:點我跳轉git

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

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

  • 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服務器功能,學習到的時候再添加。markdown

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

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

相關文章
相關標籤/搜索