你知道 SpringMVC的 执行流程 吗?

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

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

视图阶段 

你知道 SpringMVC的 执行流程 吗?_第1张图片        假设我们现在有一个请求 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的执行流程又是怎样的?

 

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

你知道 SpringMVC的 执行流程 吗?_第2张图片

 具体细节不再说明

整体的过程如下:

  • 用户发送出请求到前端控制器DispatcherServlet
  • DispatcherServlet收到请求调用HandlerMapping(处理器映射器)
  • HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。
  • DispatcherServlet调用HandlerAdapter(处理器适配器)
  • HandlerAdapter经过适配调用具体的处理器(Handler/Controller)
  • 方法上添加了@ResponseBody
  • 通过HttpMessageConverter来返回结果转换为JSON并响应

你可能感兴趣的:(spring,java)