图解Spring MVC执行原理:
首先,我们要了解MVC框架的一个重点:
Spring的web框架是围绕DispatcherServlet【调度Servlet】设计,DispatcherServlet的作用是将请求分发到不同的处理器。
了解到这个重点之后,我们再来刨析MVC的执行原理及流程
1.用户访问页面,发送一个请求,DispatcherServlet接受到请求,前端控制器调用HandlerMapper
对应我们在配置文件中配置的:
2.HandlerMapper根据请求的URL,找到具体的Handler(如下:在配置文件中配置的自定义Controller),并组装生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)返回给前端控制器。
3.DispatcherServlet根据Handler查找对应的处理器适配器(HandlerAdapter),执行HandlerAdapter处理对应的一系列操作:如参数封装,数据格式转换,数据验证等...
4.处理器适配器执行处理器(Controller,也叫页面控制器:即我们写的处理代码),并返回ModelAndView
//注意:我们这里先导入controller接口
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//ModelAndView 模型和视图
ModelAndView mv = new ModelAndView();
//封装对象,放在mv中 Model
mv.addObject("msg","HelloSpringMVC");
//封装要跳转的视图,放在ModelAndView中
mv.setViewName("hello");
return mv;
}
}
5.处理器适配器HandlerAdapter将ModelAndView返回给前端控制器
6.DispathcerServlet调用视图解析器ViewResolver解析ModelAndView
7.视图解析器ViewResolver解析完成后,返回具体的视图View
8.DispatcherServlet对View进行视图渲染(即把模型数据填充到视图中),最终响应浏览器的请求



