02【SpringMVC的工作流程】

二、SpringMVC的工作流程

2.1 SpringMVC的三大组件

2.1.1 HandlerMapping:

主要功能:根据前端发送的请求来映射(通过反射)到具体的Handler(方法/类)上,用于找到handler

2.1.2 HandlerAdapter:

主要功能:使用不同的适配器来执行handler,返回ModelAndView(模型和视图对象);

2.1.3 ViewResolver:

主要功能:解析模型和视图进行数据的渲染;

在这里插入图片描述

1、客户端发送请求给前端控制器(DispatcherServlet)

2、dispatcherServlet接收到请求调用HandlerMapping处理器映射器

3、处理器映射器根据请求的url找对应的处理器,找到并生成处理器对象(handler)返回

4、dispatchServlet将handler传入处理器适配器,使用合适的适配器执行

5、处理器适配器执行handler

6、执行完成最终封装一个ModelAndView(模型和视图)

7、将ModelAndView返回给前端控制器

8、前端控制器将请求的路径交给视图解析器进行解析

9、视图解析器解析完毕后封装一个View对象给dispatcherServlet,此View对象封装了响应参数

10、View对象对其进行渲染

11、响应客户端

重点记住:

1)映射器来找到处理器(执行的方法)

2)适配器执行handler,返回ModelAndView

3)视图解析器解析ModelAndView,返回View

4)view对其进行渲染

2.2 SpringMVC源码分析

SpringMVC实质上是对servlet进行封装,让我们的开发更加简便

2.2.1 准备工作

我们可以在spring-webmvc-x.x.x.RELEASE.jar源码包下查看DispatcherServlet.properties文件看有哪些处理器是springmvc默认加载的

在这里插入图片描述

在这里插入图片描述

2.2.2 查看DispatcherServlet的继承体系:

在这里插入图片描述

我们发现DispatcherServlet最终还是继承与HttpServlet,那么我们就直接找service方法吧!

在这里插入图片描述

经打断点分析发现,最终会走向DispacherServlet的doDispacher方法!

在这里插入图片描述

此时请求进入DispatcherServlet,按照我们画图分析的结果应该是把请求交给处理器映射器HandlerMapping最终返回一个Handler:

在这里插入图片描述

2.2.3 通过映射器获取执行链:

我们再点击getHandler方法查看源码,发现最终是交给了映射器(HandlerMapping)来获取到执行链(对Handler的封装)

在这里插入图片描述

1)查看HandlerMapping接口:

在这里插入图片描述

2)寻找HandlerMapping实现类:

在这里插入图片描述

2.2.4 获取执行handler的适配器

在这里插入图片描述

在SpringMVC默认创建的众多适配器中选择合适的;

在这里插入图片描述

  • 查看HandlerAdpter接口:

在这里插入图片描述

2.2.5 适配器执行handler

在这里插入图片描述

2.2.6 解析视图并渲染

在这里插入图片描述

DispatcherServlet对结果集进行渲染

如何渲染?

我们刚刚分析得知,应该需要视图解析器(ViewResolver来解析成一个View)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

查看ViewResolver接口:

在这里插入图片描述

2.2.7 View组件渲染

在这里插入图片描述

查看View接口:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

緑水長流*z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值