Spring MVC的执行流程步骤

Spring MVC 是基于 Java 的实现了 MVC 设计模式的轻量级 Web 框架,其执行流程步骤如下:

  1. 用户发送请求

    • 用户在浏览器中输入 URL 或通过表单提交等方式向服务器发送请求,请求会被发送到前端控制器(DispatcherServlet)。
  2. DispatcherServlet 接收请求

    • DispatcherServlet 是 Spring MVC 的核心控制器,它负责接收所有的请求,并根据请求的 URL 等信息将请求分发给相应的处理器进行处理。
  3. HandlerMapping 处理器映射

    • DispatcherServlet 接收到请求后,会将请求交给 HandlerMapping,HandlerMapping 会根据请求的 URL 查找对应的处理器(Handler)。
    • HandlerMapping 会维护一个 URL 和 Handler 的映射关系,它会根据请求的 URL 从这个映射关系中找到对应的 Handler,并将其封装成一个 HandlerExecutionChain 对象,其中包含了 Handler 和相关的拦截器(Interceptor)等信息。
  4. HandlerAdapter 处理器适配器

    • DispatcherServlet 拿到 HandlerExecutionChain 后,会通过 HandlerAdapter 来调用具体的 Handler。
    • HandlerAdapter 的作用是将 DispatcherServlet 与具体的 Handler 解耦,不同类型的 Handler 需要不同的 HandlerAdapter 来调用。它会调用 Handler 的方法来处理请求,并返回一个 ModelAndView 对象,其中包含了视图名和模型数据。
  5. Handler 处理请求

    • 具体的 Handler 执行相应的业务逻辑,可能会调用业务层(Service)的方法,进行数据库操作等。
    • 处理完成后,Handler 会将处理结果封装到一个 ModelAndView 对象中,Model 是用于存储数据的,View 是用于展示数据的视图。
  6. ViewResolver 视图解析器

    • DispatcherServlet 接收到 ModelAndView 后,会将其交给 ViewResolver 进行视图解析。
    • ViewResolver 根据 ModelAndView 中的视图名,查找对应的视图对象(View)。它会根据配置的视图解析规则,将视图名解析为具体的视图实现,如 JSP、Thymeleaf 模板等。
  7. View 渲染视图

    • 得到具体的 View 后,View 会根据 Model 中的数据进行视图渲染,将数据填充到视图模板中,生成最终的 HTML 页面或其他格式的响应内容。
  8. 返回响应

    • 渲染后的视图内容作为响应返回给客户端,客户端浏览器接收到响应后,将其展示给用户。

Spring MVC 执行流程中的每个步骤都可以进行定制和扩展,开发者可以根据具体的需求,在不同的环节插入自定义的逻辑,如拦截器、自定义的 HandlerAdapter、ViewResolver 等,以实现更灵活和强大的功能。

相关推荐
Lhappy嘻嘻7 小时前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
伊玛目的门徒7 小时前
试用leetcode之典中典 二数之和问题
java·算法·leetcode
懒鸟一枚10 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
我命由我1234512 小时前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
考虑考虑12 小时前
Sentinel安装
java·后端·微服务
凤凰院凶涛QAQ13 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
掘金_答案14 小时前
上线那天,一个 ConcurrentHashMap 差点送走我的 AI 客服——3 天排查 JVM 血泪史
java·后端·架构
猿与禅15 小时前
CosId 分布式 ID 生成器完全教程:从架构原理到生产落地
java·shardingsphere·雪花算法·分布式id·高性能·cosid·号段模式
MindUp15 小时前
企业网盘权限模型解析:多层级访问控制与审计能力选型指南
java·linux·运维
NG47715 小时前
【软件设计与体系结构】-策略设计模式
java·设计模式·软件工程