视图阶段(老旧JSP等)
DispatcherServlet:接收请求、响应结果,所有的请求都要经过它,它是被Tomcat容器初始化的当这个类加载时会加载一些组件类HandlerMapping、HandlerAdapter、ViewResolver等等。
HandlerMapping:根据请求的url,method等信息查找Handler, 即控制器方法。
HandlerAdapter:负责执行 Handler.
Handler:处理业务逻辑的 Java 类(我们自己写的 Controller 类)。
ViewResolver:进行视图的解析,根据视图逻辑将 ModelAndView 解析成真正的视图(view) 。
View:将模型数据通过页面展示给用户,它的实现类支持不同的视图类型,如 jsp,freemarker, pdf 等。
SpringMVC的执行流程如下:
- 用户发送出请求到前端控制器DispatcherServlet
- DispatcherServlet收到请求调用HandlerMapping(处理器映射器)
- HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回
- DispatcherServlet调用HandlerAdapter(处理器适配器)
- HandlerAdapter经过适配调用具体的处理器(Handler/Controller)
- Controller执行完成返ModelAndView对象
- HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet
- DispatcherServlet将ModelAndView传给ViewReslover (视图解析器)
- ViewReslover解析后返回具体View(祧图)
- DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)
- DispatcherServlet响应用户
前后端分离阶段(接口开发,异步)
- 用户发送出请求到前端控制器DispatcherServlet
- DispatcherServlet收到请求调用HandlerMapping(处理器映射器)
- HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。
- DispatcherServlet调用HandlerAdapter(处理器适配器)
- HandlerAdapter经过适配调用具体的处理器(Handler/Controller)
- 方法上添加了@ResponseBody
- 通过HttpMessageConverter来返回结果转换为JSON并响应