springMVC学习笔记DispatchServlet与九大组件

Posted 拐柒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springMVC学习笔记DispatchServlet与九大组件相关的知识,希望对你有一定的参考价值。

springmvc源码分析

DispatchServlet

DispatchServlet的父级为FrameworkServlet,FrameworkServlet的父级为HttpServletBean,HttpServletBean的父级为HttpServlet,DispatchServlet其实本质是一个HttpServlet。
1、当一个请求进入时,会执行doGet/doPost方法,
2、HttpServletBean中没有doGet/doPost方法,
3、执行FrameworkServlet中的doGet/doPost
4、FrameworkServlet中的doGet/doPost方法调用了processRequest(request, response),processRequest中真正执行逻辑的是doService方法,而doService是一个抽象方法,需要子类继承
5、从而执行DispatchServlet中的doService。
6、doService方法中执行逻辑doDispatch方法。最终在doDispatch中完成请求调用的处理。

doDispatch()

1、调用getHandler()获取到能够处理当前请求的执行链HandlerExecutionChain
2、调用getHandlerAdapter(),获取能够执行handler的适配器
3、适配器调用handler执行ha.handle,返回一个ModeAndView对象
4、调用processDispatchResult方法完成视图渲染跳转

getHandler方法

1、遍历handlerMappings
2、找到RequestMappingHandlerMapping

getHandlerAdapter方法

1、遍历handlerAdapters
2、
在这里插入图片描述

ha.handle

handle方法中调用invokeHandlerMethod对handlerMehod进行适配
invokeHandlerMethod中调用invokeForRequest ,在invokeForRequest中进行了参数数组化,并进行反射方法调用

springmvc九大组件

1、multipartResolver多部件解析器
2、localeResolver 国际化解析器
3、themeResolver 主题解析器
4、handlerMapping 处理器映射器
5、handlerAdapter 处理器适配器
6、handlerExceptionResolvers 异常解析器
7、viewNameTranslator 默认视图名转换器
8、flashMapManager flash属性管理
9、viewResolvers 视图解析器

上述九大组件都是定义了接口,接口其实是定义了规范。

九大组件初始化细节

spring容器启动时,在AbstractApplicationContext中的refresh方法中onReFresh子类DispatchServlet实现该方法,进行九大组件初始化。
在这里插入图片描述

以上是关于springMVC学习笔记DispatchServlet与九大组件的主要内容,如果未能解决你的问题,请参考以下文章

springmvc学习笔记-springmvc整合mybatis之service

springMVC学习笔记初识springmvc

springmvc学习笔记(11)-springmvc注解开发之简单参数绑定

springmvc学习笔记(15)-数据回显

springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定

springmvc学习笔记-前端控制器