基于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三个类实现原理,等后面有时间在研究。

posted @ 2017-07-07 12:28  小小架构师  阅读(272)  评论(0编辑  收藏  举报