SpringMVC源码系列(七)SpringMVC的源码的总结

1.写在前面

笔者前面已经将整个SpringMVC的源码核心的流程已经讲完了,今天来个简单的总结,同时对一些扩展点进行一些说明,同时对这些扩展点进行简单的叙述一下。让我们开始吧!

2.SpringMVC文字流程

  1. 首先方法进入:doDispatch()
  2. checkMultipart():判断当前请求是否有文件
  3. getHandler():通过HandlerMapping去找一个Controller对象
    • 扩展点1:HandlerMapping
    • Spring boot 扩展 Spring MVC 其中就是扩展了HandlerMapping去解析静态资源
  4. getHandlerAdapter():根据Controller的类型去找一个适配器
    • 因为Controller有很多不同的注册方法 所以需要不同的适配器
    • 扩展点2:HandlerAdapter
  5. Handle():执行Controller逻辑并且进行视图渲染(判断是要重定向还是转发还是响应页面)
    • invokeForRequest():执行方法的全部逻辑
    • 首先给参数赋值
      • 参数辅助的扩展点:HandlerMethodArgumentResolver
    • 调用invoke()执行方法
  6. setResponseStatus():设置ResponseStatus响应状态码 对标:@ResponseStatus注解
  7. handleReturnValue():进行视图裁决
    • 扩展点:returnValueHandlers通过这个对象来进行判断接下来视图怎么做
  8. hanler.handleReturnValue():对返回值进行处理(判断是否需要响应还是需要重定向)
    • 如果是@ResponseBody注解又有一个扩展点:HttpMessageConverter
  9. getModleAndView():重新封装一个ModelAndView对象
    • 如果不需要渲染视图(如果是重定向 || 响应视图的话) 就会返回null
    • mavContainer.isRequestHandled() 判断是否需要重定向或响应
    • 同时会把model里面的参数放到request.setAttribute(说明model的作用域是request作用域)
  10. processDispatchResult():开始做视图渲染
    • 判断是否需要响应异常视图
    • 扩展点:ViewResolver
    • 拿到视图名称 封装成一个视图对象 进行forward

3.SpringMVC图片流程

在这里插入图片描述

4.写在最后

本篇博客主要对SpringMVC进行了简单的总结,也是对前面整个springMVC体系的总结吧!到此整个springMVC就讲完了。

前面整个springMVC体系的总结吧!到此整个springMVC就讲完了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值