SpringMVC的执行流程是这个框架最核心的内容,分为两个阶段:
- 视图阶段(老旧JSP等)
- 前后端分离阶段(接口开发、异步)
一、 视图阶段(JSP)
假设现在有一个请求http://localhost:8080/user/getById/1, 它在SpringMVC中的执行流程如下图所示。
- 用户发出请求到前端控制器DispatcherServlet。
- DispatcherServlet收到请求调用HandlerMapping。
- HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。
- DispatcherServlet调用HandlerAdaptor。
- HandlerAdaptor经过适配调用具体的处理器(handler/controller)。
- 处理器执行完成返回ModelAndView对象。
- HandlerAdaptor将ModelAndView对象返回给DispatcherServlet。
- DispatcherServlet将ModelAndView对象传给ViewResolver。
- ViewResolver解析后返回具体的View。
- DispatcherServlet根据View进行渲染视图(即将模型数据填充到视图中)。
- DispatcherServlet响应用户。
二、前后端分离阶段(接口开发,异步请求)
- 用户发出请求到前端控制器DispatcherServlet。
- DispatcherServlet收到请求调用HandlerMapping。
- HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。
- DispatcherServlet调用HandlerAdaptor。
- HandlerAdaptor经过适配调用具体的处理器(handler/controller)。
- 处理器方法上添加了
@ResponseBody注解。 - 通过
HttpMessageConverter将返回结果转换为JSON并响应。