什么是SpringMVC

概述

SpringMVC 是 Spring Framework 的一部分,是基于 Java 实现 MVC 的轻量级 Web 框架。查看官方文档:

https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web

SpringMVC 的特点:

  1. 轻量级,简单易学
  2. 高效 , 基于请求响应的MVC框架
  3. 与 Spring 兼容性好,无缝结合,我们可以将SpringMVC中所有要用到的bean,注册到Spring中
  4. 约定优于配置
  5. 功能强大:RESTful、数据验证、格式化、本地化、主题等
  6. 简洁灵活

最重要的一点还是用的人多 , 使用的公司多 .

中心控制器

Spring 的 web 框架围绕 DispatcherServlet 设计。DispatcherServlet 的作用是将请求分发到不同的处理器。从Spring2.5 开始,使用 Java 5或者以上版本的用户可以采用基于注解的 controller 声明方式。

​ SpringMVC框架像许多其他MVC框架一样, 以请求为驱动,围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet 是一个实际的 Servlet (它继承自 HttpServlet 基类)
【SpringMVC】2、SpringMVC入门
SpringMVC的原理如下图所示:

​ 当发起请求时被前置的控制器拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。
【SpringMVC】2、SpringMVC入门

SpringMVC 执行原理

【SpringMVC】2、SpringMVC入门

图为 SpringMVC 的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。

简要分析执行流程
  1. DispatcherServlet 表示前置控制器,是整个 SpringMVC 的控制中心。用户发出请求,DispatcherServlet 接收请求并拦截请求。

    我们假设请求的url为:http://localhost:8080/SpringMVC/hello

    将如上 url 分成三部分:

    • http://localhost:8080服务器域名

    • SpringMVC部署在服务器上的web站点

    • hello表示控制器

    通过分析,如上url表示为:请求位于服务器localhost:8080上的 SpringMVC 站点的hello控制器。

  2. HandlerMapping 为处理器映射。DispatcherServlet 调用 HandlerMapping,HandlerMapping 根据请求 url 查找 Handler。

  3. HandlerExecution 表示具体的 Handler,其主要作用是根据 url 查找控制器,如上 url 被查找控制器为:hello。

  4. HandlerExecution 将解析后的信息传递给 DispatcherServlet,如解析控制器映射等。

  5. HandlerAdapter 表示处理器适配器,其按照特定的规则去执行 Handler。

  6. Handler 让具体的 Controller 执行。

  7. Controller 将具体的执行信息返回给 HandlerAdapter,如 ModelAndView。

  8. HandlerAdapter 将视图逻辑名或模型传递给 DispatcherServlet。

  9. DispatcherServlet 调用视图解析器 (ViewResolver) 来解析 HandlerAdapter 传递的逻辑视图名。

  10. 视图解析器将解析的逻辑视图名传给 DispatcherServlet。

  11. DispatcherServlet 根据视图解析器解析的视图结果,调用具体的视图。

  12. 最终视图呈现给用户。

相关文章: