当前位置: 首页 > news >正文

SpringMVC执行的流程

SpringMVC 基于 MVC 架构模式,核心流程时前端控制室 DispathcherServlet 统一调度,通过组件协作完成 http 的请求与响应。

画板

对于 dispatchServlet 作为前端请求的控制器,全局的访问点,首先将根据 URL 调用 HandlerMapping 获取 Handler 配置的相关的对象。以 HandlerExceptionChain 执行链的形式返回。

handlerMapping 根据 URL 和 HTTP 方法找到对应的处理器,并包装成HandlerExceptionChain。 比如通过 RequestMappingHandlerMapping 映射到 Controller 里面 方法上面去。

handlerExceptionChain 调用链,包含了一个 handler 和多个拦截器。按照顺序调用拦截器的 prehandle 方法

根据 Handler 找到合适的 HandlerAdapter。开始执行拦截器的内容

将 Request 中的参数提取出来进行填充

  1. 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)方法,处理请求。在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
    • 数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
    • 数据格式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
    • 数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中

执行完成之后

  1. Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象。
  2. 此时将开始执行拦截器的postHandle(…)方法【逆向】。
  3. 根据返回的ModelAndView(此时会判断是否存在异常:如果存在异常,则执行 HandlerExceptionResolver进行异常处理)选择一个适合的ViewResolver进行视图解析,根据Model 和View,来渲染视图。
  4. 渲染视图完毕执行拦截器的afterCompletion(…)方法【逆向】。
  5. 将渲染结果返回给客户端。

http://www.dtcms.com/a/64872.html

相关文章:

  • 子网掩码介绍
  • 批量ip反查域名工具
  • 第十八:go 并发 goroutine
  • VScode 运行LVGL
  • 前端监测窗口尺寸和元素尺寸变化的方法
  • 【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器---tinyEasyMuduoWebServer
  • 机器人运动学与动力学
  • 自动驾驶与车路协同
  • 力扣:3305.元音辅音字符串计数
  • Guangzhaotest
  • 动态规划中的自底向上与自顶向下
  • 【A2DP】深入解析A2DP协议中的音频流处理
  • 数字孪生技术在工业制造中的应用探索
  • MongoDB副本集部署完整教程
  • 逐梦DBA:Linux环境下 MySQL 的卸载
  • 嵌入式八股C语言---文件,可执行文件的加载与运行篇
  • MySQL——基础知识
  • 【机器学习-基础知识】统计和贝叶斯推断
  • Flutter_学习记录_device_info_plus 插件获取设备信息
  • 12 | 给应用添加优雅关停功能
  • Webpack 优化深度解析:从构建性能到输出优化的全面指南
  • Vue项目上传到GitHub,vscode拉取vue项目更新后推送到GitHub上
  • vllm.LLM 的参数
  • Linux——进程初步
  • FI模块功能范围的基本概念、用途、配置介绍
  • java登神之阶之顺序表
  • SpringAI+Ollama+DeepSeek本地大模型调用
  • yolov8在昇腾芯片上的测试
  • ESP32-S3-WROOM-1-N16R8 微控制器,搭配 SI4732-A10-GSR 的收音机(源码+PCB+3D模型)
  • libpcap捕捉过滤wifi beacon包解析国标飞行器drone id报文