| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> SpringBoot源码学习四——MVC主流程下 -> 正文阅读 |
|
[Java知识库]SpringBoot源码学习四——MVC主流程下 |
文章目录一、处理请求MVC主流程上接上文,DispatcherServlet加载完成之后,它的url-pattern是"/",会匹配所有请求,但是优先级最低。基本上动态资源的请求都会被它处理。 1.1 HandlerMappingDispatcherServlet收到请求之后会调用HandlerMapping,HandlerMapping根据请求的url找到具体的处理方法,然后将处理方法和拦截器链封装成处理器对象,返回给DispatcherServlet。 1.1.1 HandlerMapping装配HandlerMapping在WebMvcAutoConfiguration里面完成装配 1.1.2 解析@RequestMapping生成Url-Method继续找到MappingRegistry的注册方法,断点看下
Controller的方法中如果没有@RequestMapping,返回的RequestMappingInfo就是null,也就没有url-method的映射关系 1.1.3 HandlerMapping交给DispatchServlet前面提到,DispatchServlet第一次处理请求时会调用init方法,里面有调用了initHandlerMappings,它里面把前面创建的RequestMappingHandlerMapping以及其他的HandlerMapping,放入了DispatchServlet 1.1.4 包装处理方法和拦截器链根据servlet生命周期,请求经过层层过滤器之后先交给service,判断doGet/doPost,在DispatchServlet会交给doService,再到doDispatch,看下调用链 1.2 HandlerAdapterDispatchServlet调用HandlerAdapter来处理前面获取的mappedHandler,HandlerAdapter执行完成里面的handler返回ModelAndView。 1.2.1 HandlerAdapter装配HandlerAdapter装配也是在WebMvcAutoConfiguration完成
1.2.2 获取对应的HandlerAdapter跟代码
1.2.3 拦截器前置方法进入mappedHandler.applyPreHandle(processedRequest, response) 1.2.4 执行处理方法进入
1.2.5 匹配@ResponseBody包装返回值返回到invokeAndHandle
1.3 ViewReslover采用SpringBoot微服务架构,基本上都是前后端分离的,所有的接口都加了@ResponseBody,不需要后端去做页面跳转,ViewReslover就用不上了,这块就不讲了,代码这里进入
二、过滤器与拦截器过滤器由Servlet容器提供支持,需实现Tomcat提供的Filter接口,拦截器由IOC容器提供支持,需实现Spring提供的HandlerInterceptor接口。请求先到达Servlet容器,再转交给IOC容器,因此执行顺序是先过滤器再拦截器。IOC容器和Servlet容器在启动过程中都会触发监听事件,所以监听器在服务启动时就执行了。最终顺序监听器–>过滤器–>拦截器。 三、总结梳理下总体的工作流程 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:14:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |