springMVC学习笔记(五)DispatchServlet与九大组件

本文深入剖析SpringMVC的DispatchServlet工作流程,从doGet/doPost到doDispatch,详述getHandler和getHandlerAdapter方法。同时,介绍了SpringMVC的九大组件,包括多部件解析器、国际化解析器、处理器映射器等,并阐述了它们的初始化细节。通过源码分析,帮助读者理解SpringMVC内部机制。
摘要由CSDN通过智能技术生成

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实现该方法,进行九大组件初始化。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值