springboot请求映射原理,springboot版本2.3.4.RELEASE

一,springboot接收的所有的请求都会来到DispatchServlet

因为springboot底层使用的还是springmvc的DispatchServlet。
在这里插入图片描述
然后先进入doDispatch 方法 :
在这里插入图片描述

这个类查看其父类是HttpServlet,所以这个也是一个HttpServlet。
idea 中选中类名,按ctrl + h ,可以打开下面的继承树,可以看到其父类是HttpServlet。
在这里插入图片描述

二,既然是HttpServlet,必然会重写相应的doGet和doPost等的方法。

只能在 FrameworkServlet 中找到对应的doGet和doPost等。
在这里插入图片描述
又调用的processRequest 方法。这个方法又主要调用的doService 方法。
在这里插入图片描述
doServic是一个抽象方法,只能去子类查看。
在这里插入图片描述
在子类中找到doService 方法,核心部分的代码是doDispatch
在这里插入图片描述

三,所以这个SpringMvc的主要功能都从这个DispatcherServlet 类下的doDispatch 方法寻找。

最主要的部分功能是getHandler的功能来处理决定相应的handler 来处理当前的请求。
从下面这个getHandler 方法获得。
在这里插入图片描述
进入方法查看。
在这里插入图片描述
有一个handlerMappings 的属性列表。这里面存储了所有处理器映射规则,也就是访问请求的路径,找哪个方法都会在这里面进行匹配。这个handlerMappings 的list集合,会存储5个元素的HandlerMapping。如下:
在这里插入图片描述

第一个元素是RequestHandlerMapping,会在springboot启动时,扫描所有的controller,将保存@RequestMapping信息和 handler的映射规则,保存到这个HandlerMapping中。
所有自定义的映射方法都在这个对象的registry 属性下:
在这里插入图片描述
第五个元素是WelcomPageHandlerMapping,处理根路径请求。
然后根据代码进行遍历所有的handlerMappings的mapping,哪个能处理当前的请求,则由哪个HandlerMapping来进行处理。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值