赞
踩
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;
}
}
2.新建web路径/WEB-INF/ok.jsp
<head>
<title>ok页面</title>
</head>
<body>
<h1>进入到ok页面</h1>
</body>
3.测试
3.调整ok.jsp
, 再次测试
<body>
<h1>进入到ok页面</h1>
name - ${requestScope.name}
</body>
地址栏输入: 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初步入门
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。