基于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渲染页面
项目执行流程简要说明:
- 调用NettyHttpServer.main方法,启动Netty服务
- 客户访问url后,Netty回调HttpServerHandler.channelRead0
- 通过url,到HandlerRequestMapping找到对应的HandlerRequestAdapter
- 调用HandlerRequestAdapter.handle方法,进行业务处理后。返回ModelAndView
- ViewResolver 通过ModelAndView解析页面地址,获取到指定文件后返回页面
已实现功能:
- 静态文件访问
- 表单提交处理
- 重定向
至于其他功能,比如模板,session,请求转发等常用web服务器功能,学习到的时候再添加。
uml图(好久没用过uml了,有不对的地方欢迎指正)
项目启动后,访问localhost:8080:
点击表单提交后,后台会输出参数信息,页面跳转到登录结果页面
服务器基本的功能实现了,就需要研究下 HttpServerCodec,HttpObjectAggregator,ChunkedWriteHandler三个类实现原理,等后面有时间在研究。