分为两个阶段:视图阶段(老旧的JSP)和前后端分离阶段(接口开发、异步)。
视图阶段:
- 用户发送请求到前端控制器
- 前端控制器接收到请求后调用处理器映射器
- 根据请求的 URL 映射到具体的处理器(Controller)(
RequestMappingHandlerMapping
是 Spring MVC 默认使用的HandlerMapping
实现类,它通过扫描@Controller
和@RequestMapping
注解来建立 URL 与处理器的映射关系。)。返回给前端控制器一个 处理器执行链,包含处理器和拦截器。 - 前端控制器调用处理器适配器。
- 处理器适配器调用具体的处理器(Controller/Hander)。
- Controller 执行完成返回 ModelAndView 对象(如果配置了拦截器,会在处理器方法执行前后执行拦截器的逻辑)。
- 处理器适配器 将 Controller 执行结果 ModelAndView 返回给 前端控制器。
- 前端控制器将 ModelAndView 传给 视图解析器。
- 视图解析器 解析后返回具体 View (视图)。
- 前端控制器根据 View 进行渲染视图(即将模型数据渲染到视图中)。
- 前端控制器响应用户。
在这个过程中,前端控制器是整个SpringMVC的核心,它负责协调各个组件的工作。处理器映射器负责将请求映射到对应的Controller,而处理器适配器负责执行Controller。视图解析器则根据逻辑视图名(如JSP文件名)解析出View对象,最后由View渲染出实际的页面内容。
前后端分离阶段
- 用户发请求到前端控制器
- 前端控制器调用处理器映射器
- 处理器映射器找到具体的处理器,返回给前端控制器一个 处理器执行链,包含处理器和拦截器。
- 前端控制器调用处理器适配器
- 处理器适配器调用具体的处理器(Controller/Hander)。
- 方法上添加了 @ResponseBody,通过 HttpMessageConverter 来将返回结果转换为 JSON 并响应。