当前位置:   article > 正文

SpringMVC系列十三: SpringMVC执行流程 - 源码分析

SpringMVC系列十三: SpringMVC执行流程 - 源码分析

在这里插入图片描述

执行流程图

在这里插入图片描述

实验设计

1.新建com.zzw.web.debug.HelloHandler

@Controller
public class HelloHandler {

    //编写方法, 响应请求, 返回ModelAndView
    @RequestMapping(value = "/debug/springmvc")
    public ModelAndView hello(HttpServletRequest request, HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("ok");//对应到 /WEB-INF/pages/ok.jsp
        modelAndView.addObject("name", "老韩");//在model中放入了数据
        return modelAndView;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2.新建web路径/WEB-INF/ok.jsp

<head>
    <title>ok页面</title>
</head>
<body>
<h1>进入到ok页面</h1>
</body>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.测试
在这里插入图片描述
3.调整ok.jsp, 再次测试

<body>
<h1>进入到ok页面</h1>
name - ${requestScope.name}
</body>
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

前端控制器分发请求

在这里插入图片描述

地址栏输入: http://localhost:8088/springmvc/debug/springmvc
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

❀❀Spring容器结构剖析❀❀

这里就体现了SpringMVC前端控制器和容器的关系

在这里插入图片描述

分发请求

在这里插入图片描述

处理器映射器

在这里插入图片描述
在这里插入图片描述

拦截器处理器执行器链的一个属性

在这里插入图片描述

调用处理器映射器, 返回处理器执行器链

在这里插入图片描述

在这里插入图片描述

处理器执行器链拿到目标方法

在这里插入图片描述

处理器适配器

在这里插入图片描述

根据处理器执行器链Handler拿到处理器适配器, 不同的适配器对应不同的handler

在这里插入图片描述

在这里插入图片描述

处理器适配器中有handle()方法, 调用目标方法, 并返回ModelAndView.

在这里插入图片描述

在这里插入图片描述

因为是浏览器地址栏请求, 所以是GET请求

在这里插入图片描述

调用处理器适配器handle(), 在这里面反射调用目标方法

在这里插入图片描述

进入

在这里插入图片描述

进入

在这里插入图片描述
在这里插入图片描述

进入

在这里插入图片描述

在这里反射调用目标方法

在这里插入图片描述

反射调用目标方法

直接放行, 在目标方法打个断点

在这里插入图片描述

对modelAndView估值

在这里插入图片描述

不停地往下走, 往下走N步

在这里插入图片描述

mav就是我们目标方法的ModelAndView

在这里插入图片描述

继续往下走, 回到DisPatcherServlet

在这里插入图片描述

调用视图解析器

在这里插入图片描述

往下走

在这里插入图片描述

进入

在这里插入图片描述
在这里插入图片描述

进入

在这里插入图片描述

在这里插入图片描述

进入, 前端控制器调用某个视图解析器返回

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

渲染视图

在这里插入图片描述

下一步

在这里插入图片描述

进入

在这里插入图片描述

下一步

在这里插入图片描述

在这里插入图片描述

进入Step Into, 出来 Step out, 再进入Step Into. 拿到RequestDispatcher

在这里插入图片描述

请求转发

在这里插入图片描述

作业布置

1.把前面我们学过的SpringMVC异常处理相关代码和案例, 自己写一遍. - 一定要自己写一遍, 否则没有印象, 理解不会深入
2.简述SpringMVC执行流程, 并画出示意图
3.把我们Debug过的SpringMVC执行流程代码, 自己也走一下, 加深理解(不用每一条语句都debug, 主要是梳理流程)

在这里插入图片描述
下一讲, 我们学习springboot初步入门

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/1015659
推荐阅读
相关标签
  

闽ICP备14008679号