SpringMVC 的运行原理

时间:2021-05-07 05:38:56

0. 灵魂的拷问

  问:SpringMVC 是什么?它有什么作用?
  答:SpringMVC 的全称是 Spring Web Model-View-Controller,它是 Spring Framework 的其中一个模块,是Spring的一个子框架,拥有 Spring 的特性,如依赖注入等特性。SpringMVC 实现了 Web 模型中的 MVC 框架模式,通过把 Model,View,Controller 分离,把较为复杂的 web 应用分成逻辑清晰的几部分。这种种分层工作的办法简化了开发,更不易出错。让组内开发人员之间的配合更加方便。

  问:SpringMVC 的运行流程是什么?
  答:SpringMVC 的运行流程主要分为以下步骤(附图):

SpringMVC 的运行原理
图1 SpringMVC 的运行架构示意图

  (1) 客户端向服务端发送 url 请求;
  (2) 服务端接到 url 请求,被 DispatcherServlet 匹配 的 url 会由 DispatcherServlet 处理,根据传入的逻辑 uri 调用 HandlerMapping 进行处理器的映射匹配,匹配成功返回一个包含了处理器信息(即 Controller)和拦截器(即 Intercepter)信息的 HandleExecutionChain 对象,匹配失败返回 null;
  (3) DispatcherServlet 根据返回的 HEC 调用可用的 HandlerAdapter 执行 Controller 的方法,执行完毕向 DispatcherServlet 返回一个 ModelAndView 对象,该对象分为 Model 和 View 两个部分,其中 Model 是数据的 Map(即键-值对集合),包含了需要渲染的数据信息;View 是页面的模板,指明了数据渲染的格式。ModelAndView 不能直接渲染并返回浏览器,还需要进一步的解析;
  (4) DispatcherServlet 得到 ModelAndView 后,调用 ViewResolver 进行视图解析得到处理后的 View 对象,最后 DispatcherServlet 把 View 对象渲染成页面视图传递给客户端浏览器。

  问:我觉得你说的这些太浅了,能不能给点直击灵魂的介绍?
  答:请移步 https://stackify.com/spring-mvc/ 去获取更多惊喜。