• Spring MVC的执行流程(有图有真相)


    Spring MVC的执行流程

    我们先回顾一下MVC的概念,便于我们学习Spring MVC的执行流程

    MVC概念

    MVC是一种设计模式,在这种模式下软件被分为三层,即Model(模型)、View(视图)、Controller(控制器)。

    • Model代表的是数据
    • View代表的是用户界面
    • Controller代表的是数据的处理逻辑,它是Model和View这两层的桥梁。

    将软件分层的好处是,可以将对象之间的耦合度降低,便于代码的维护

    Spring MVC概念

    Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。

    详细介绍可以参考查看官方文档:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web

    围绕着SpringMVC执行流程来分析:Spring的web框架围绕DispatcherServlet [ 调度Servlet ] 设计

    DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁;

    因为SpringMVC好 , 简单 , 便捷 , 易学 , 天生和Spring无缝集成(使用SpringIoC和Aop) , 使用约定优于配置 . 能够进行简单的junit测试 . 支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等…所以我们要学习它,很重要的。

    执行流程图解

    执行流程图如下所示:
    在这里插入图片描述

    1. 整个过程开始于客户端发出的一个HTTP请求,Web应用服务器接收到这个请求。如果匹配DispatcherServlet的请求映射路径,则Web容器将该请求转交给DispatcherServlet处理。

      DispatcherServlet的作用是将请求分发到不同的处理器

    2. DispatcherServlet接收到这个请求后,将根据请求的信息(包括URL、HTTP方法、请求报文头、请求参数、Cookie等)及HandlerMapping的配置找到处理请求的处理器(Handler)。

      可将HandlerMapping看做路由控制器,将Handler看做目标主机。值得注意的是,在Spring MVC中并没有定义一个Handler接口,实际上任何一个Object都可以成为请求处理器。

    3. 当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过
      HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。

      HandlerAdapter是Spring MVC框架级接口,顾名思义,HandlerAdapter是一个适配器,它用统一的接口对各种Handler方法进行调用

    4. 处理器完成业务逻辑的处理后,将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和模型数据信息。

    5. ModelAndView中包含的是“逻辑视图名”而非真正的视图对象,DispatcherServlet借由ViewResolver完成逻辑视图名到真实视图对象的解析工作。

    6. 当得到真实的视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。

    7. 最终客户端得到的响应消息可能是一个普通的HTML页面,也可能是一个XML或JSON串,甚至是一张图片或一个PDF文档等不同的媒体形式。

  • 相关阅读:
    2024MathorCup A题 赛后思路代码分享(分赛区一等奖)移动通信网络中 PCI 规划问题
    python--由wrfouput的数据计算位势涡度,并插值到指定压力层
    暴力递归转动态规划(四)
    汽车信息安全--如何理解TrustZone(1)
    错误: 找不到或无法加载主类 Main
    【java实验】在项目中使用Java常用类
    验证码的编写
    Python函数详解(二)——函数的参数传递基础
    nodejs毕业设计基于Nodejs实现的心理健康咨询微信小程序
    Jmeter接口自动化测试 —— Jmeter断言之Json断言!
  • 原文地址:https://blog.csdn.net/weixin_45525272/article/details/126513597