基于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

相关文章
相关标签/搜索