你知道 SpringMVC的 执行流程 吗?

简介: 你知道 SpringMVC的 执行流程 吗?

SpringMVC的执行流程要分两阶段讲

  • 视图阶段(老旧JSP等)
  • 前后端分离阶段(接口开发,异步)

视图阶段


 假设我们现在有一个请求 http://localhost:8080/user/getById/1 ,请求从浏览器发出,在后台就会有一个 前端控制器DispatcherServlet 来接收请求,它是调度中心,所有的请求都要经过这个DispatcherServlet,它是由Tomcat容器进行初始化的,当这个类被加载的时候,在内部就会加载出其他组件 处理器映射器HandlerMapping、处理器适配器HandlerAdaptor、视图解析器ViewResolver


       DispatcherServlet 会到 处理器映射器中查询handler,处理器映射器内存储的就是路径与handler的对应关系,handler 简单讲就是某个Controller的某个方法,第3步中返回的并不是单纯的handler,而是处理器执行链,因为要考虑到拦截器的存在


        为什么有 处理器Handler 后还要一个 处理器适配器HandlerAdaptor,处理器适配器的作用是处理各式各样的参数和返回值,从而让处理器能够运行,之后返回ModelAndView给前端控制器


       视图解析器将逻辑视图ModelAndView解析为真正的视图,返回 View对象 给前端控制器


整体过程:


用户发送出请求到前端控制器DispatcherServlet

DispatcherServlet收到请求调用HandlerMapping(处理器映射器)

HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet

DispatcherServlet调用HandlerAdapter(处理器适配器)

HandlerAdapter经过适配调用具体的处理器(Handler/Controller)

Controller执行完成返回ModelAndView对象

HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet

DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)

ViewReslover解析后返回具体View(视图)

DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)

DispatcherServlet响应用户      

现如今的开发都是 接口开发,不返回视图,而是json,那么SpringMVC的执行流程又是怎样的?

前后端分离阶段(接口开发,异步请求)

具体细节不再说明

整体的过程如下:

用户发送出请求到前端控制器DispatcherServlet

DispatcherServlet收到请求调用HandlerMapping(处理器映射器)

HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。

DispatcherServlet调用HandlerAdapter(处理器适配器)

HandlerAdapter经过适配调用具体的处理器(Handler/Controller)

方法上添加了@ResponseBody

通过HttpMessageConverter来返回结果转换为JSON并响应

目录
相关文章
|
4月前
|
前端开发
SpringMVC的执行流程
SpringMVC的执行流程
|
16天前
|
XML 存储 JSON
SpringMVC执行流程
SpringMVC执行流程
15 0
|
9月前
|
前端开发 Java
springMVC执行流程详解
springMVC执行流程详解
96 0
springMVC执行流程详解
|
9月前
|
前端开发 Java 调度
springMVC执行流程
springMVC执行流程
93 0
|
10月前
|
XML 前端开发 调度
SpringMVC的执行流程知道嘛
SpringMVC的执行流程知道嘛
41 0
|
10月前
|
存储 前端开发 Java
二.SpringMVC源码剖析-SpringMVC执行流程
上一篇文章写得是SpringMVC组件初始化,这篇文章我们来探讨一下SpringMVC的执行流程
|
10月前
|
JSON 前端开发 对象存储
SpingMVC的执行流程及常用注解
SpingMVC的执行流程及常用注解
59 0
SpringMVC中多个拦截器的执行顺序
SpringMVC中多个拦截器的执行顺序
|
XML 存储 JSON
|
存储 前端开发 Java
springmvc与struts2执行流程比较
springmvc与struts2执行流程比较
83 0
springmvc与struts2执行流程比较