springboot下的DispatcherServlet

1、springboot2.0下的DispatcherServlet代码跟踪:
客户端发送请求,调用DispatcherServlet的service(),此方法继承于Servlet(DispatcherServlet extends FrameworkServlet ,FrameworkServlet extends HttpServletBean,HttpServletBean extends HttpServlet,HttpServlet extends GenericServlet,GenericServlet extends Servlet),并且在HttpServlet重写了service(),这个方法中对get/post/head/put等请求进行处理,并调用相应的doGet/doPost/doHead/doPut等方法,在FrameworkServlet中对这些方法进行了重写,doGet/doPost/doHead/doPut等方法最终调用processRequest();此方法中最终调用了doService();DispatcherServlet重写了doService(),在此方法中调用doDispatch()进行请求分发
这里写图片描述

doDispatch通过调用getHandler方法得到处理器(Controller),调用getHandlerAdapter方法得到适配器
这里写图片描述

mv = ha.handle(processedRequest, response, mappedHandler.getHandler());这行代码最终调用RequestMappingHandlerAdapter的handleInternal方法
这里写图片描述
最终通过invokeHandlerMethod方法里面的invocableMethod.invokeAndHandle(webRequest, mavContainer)调用对应的处理器,即执行控制类的业务逻辑代码。
2、SpringMVC的运行流程:
这里写图片描述
⑴ 用户发送请求至前端控制器DispatcherServlet
⑵ DispatcherServlet收到请求调用HandlerMapping处理器映射器。
⑶ 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
⑷ DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
⑸ 执行处理器(Controller,也叫后端控制器)。
⑹ Controller执行完成返回ModelAndView
⑺ HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
⑻ DispatcherServlet将ModelAndView传给ViewReslover视图解析器
⑼ ViewReslover解析后返回具体View
⑽ DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
⑾ DispatcherServlet响应用户。从上面可以看出,DispatcherServlet有接收请求,响应结果,转发等作用。有了DispatcherServlet之后,可以减少组件之间的耦合度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值