深圳网站制作开发排名国家世界新闻
web/
2025/10/4 1:39:41/
文章来源:
深圳网站制作开发排名,国家世界新闻,wordpress打不开rss,商丘做网站推广前言文本已收录至我的GitHub仓库#xff0c;欢迎Star#xff1a;https://github.com/bin392328206种一棵树最好的时间是十年前#xff0c;其次是现在six-finger-web一个Web后端框架的轮子从处理Http请求【基于Netty的请求级Web服务器】 到mvc【接口封装转发)】#xff0c;再…前言文本已收录至我的GitHub仓库欢迎Starhttps://github.com/bin392328206种一棵树最好的时间是十年前其次是现在six-finger-web一个Web后端框架的轮子从处理Http请求【基于Netty的请求级Web服务器】 到mvc【接口封装转发)】再到ioc【依赖注入】aop【切面】再到 rpc【远程过程调用】最后到orm【数据库操作】全部自己撸一个简易的轮子。github为啥要写这个轮子其实是这样的小六六自己平时呢有时候喜欢看看人家的源码比如Spring,但是小六六的水平可能不怎么样每次看都看得晕头转向然后就感觉里面的细节太难了然后我就只能观其总体的思想然后我就想我如果可以根据各位前辈的一些思考自己撸一个简单的轮子出来那我后面去理解作者的思想是不是简单点呢于是呢 six-finger-web就面世了它其实就是我的一个学习过程然后我把它开源出来希望能帮助那些对于学习源码有困难的同学。还有就是可以锻炼一下自己的编码能力因为平时我们总是crud用的Java api都是那些久而久之很多框架类的api我们根本就不熟练了所以借此机会锻炼一下。特点内置由 Netty 编写 HTTP 服务器无需额外依赖 Tomcat 之类的 web 服务刚好小六六把Netty系列写完顺便用下代码简单易懂小六六自己写不出框架大佬那种高类聚低耦合的代码能力稍微强一点看代码就能懂弱点的也没关系小六六有配套的从0搭建教程。支持MVC相关的注解确保和SpringMVC的用法类似支持Spring IOC 和Aop相关功能支持类似于Mybatis相关功能支持类似于Dubbo的rpc相关功能对于数据返回只支持Json格式絮叨此教程只适合初中级水平因为作者本身水平不高不喜勿喷今天是文章的第二篇实现一个简单的SpringMVC,参考的是Guide哥的jsoncat。 好了下面我给大家来一一走一遍搭建流程这边建议一边下载源码一边来看如果觉得有问题的话总结的包结构首先我们来看看写完了MVC之后的包结构以至于大家心里有数pom的修改首先第一步我先把pom文件新增的地方给大家看看引入他们一个是反射因为写轮子反射肯定用的多还有一个就是json转换工具具体MVC的实现这边我先把整体的思想给大家捋捋这个只是一个简单的实现还有很多的细节没有完成首先我们看看我们写业务是个怎么样的样子如下图 好这个就是我们最终要做到的效果对吧那我们浏览器请求的时候长什么样呢 它长这样那其实久很清晰了SpringMVC要实现的就是不同请求走不同的方法嘛这就是核心思想嘛。总的来说其实就三个部分一个是原有的server的改造一个是springmvc相关容器组件的初始化一个是http请求的请求流程处理下面我一一来讲解改造Netty服务器的请求部分这边我解题然后把找类 方法的流程给大家大家自己去看源码HttpRequestHandler-channelRead0其实服务器这边需要改造的地方也不多就是通过请求来找到不同的处理器然后再去处理我们的业务然后根据业务的返回值然后我们再去封装一些成功或者失败然后这边来看看server包下面的几个类具体的代码大家就自己去看了每个类基本上有注释 springmvc相关组件的初始化首先我们再来看看我们的启动类这边 类 ApplicationServer 然后我们就可以往下跟代码了其实大家看源码也是这样但是源码的话细节毕竟多所以难懂点类 DispatcherMethodMapper-loadRoutes 这个类的东西还比较多基本上很多地方我写了注释如果不懂的可以私下请教然后我们大致来分析一下吧第一个肯定是加载包的扫描路径因为我这个是基于注解的我就在配置文件中配置扫描路径 之后就是遍历里面的.class文件然后找到类上面的注解如果有RestController 说明他这个类是用来处理请求的然后遍历类中的方法然后去一个个分析 PostMapping RequestMapping GetMapping 反正也就是if else 然后把这些方法把请求的url封装到一个springmvc的容器中等请求来的时候就去容器中匹配然后找到对应的方法再填充对应的参数就可以执行方法了具体的呢建议大家跟着源码来看哈之后便是我们的主流程了我们来看看主题流程怎么走的还是在服务端那个类那跟起 HttpRequestHandler-channelRead0我们来看这个方法中的 RequestHandlerFactory-create 其实就是根据不同的请求方式找到对应的处理类然后我们接下去看 HttpRequestHandler-channelRead0 然后大家看这个方法才是我们的重头戏也就是我们处理的核心了我们往下跟 RequestHandler 发现是一个接口 假设我们是Get请求找到他的实现类GetRequestHandler-handle 这个就是我们真正要看的逻辑所在了我们往下看 封装请求参数和路径参数DispatcherMethodMapper-getMethodDetail MethodDetail-build这个就是核心填充的方法了当填充完成之后我们会获得一个对象这个对象就比较厉害了他包含当前要执行的方法 请求参数等如下图 GetRequestHandler-handle 接着往下 我们来看下里面的核心方法 ParameterResolver-resolve 根据不同的方式去填充然后填充完成之后呢通过反射去拿到当前要执行的对象然后再通过反射去执行对应的方法至此mvc的所有流程走完了我们看看请求的结果要执行的RestController 请求 http://localhost:8081/user/小六六写MVC结尾好了我们把MVC的小小流程写完了代码也上传了希望大家好好学习一起加油后面就要撸ioc 和aop了。日常求赞好了各位以上就是这篇文章的全部内容了能看到这里的人呀都是真粉。创作不易各位的支持和认可就是我创作的最大动力我们下篇文章六脉神剑 | 文 【原创】如果本篇博客有任何错误请批评指教不胜感激
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86535.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!