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

SpringMVC的执行流程

SpringMVC(Model-View-Controller)的执行流程

Spring MVC是Spring框架中用于构建web应用的模块,基于MVC的设计模式实现“请求处理,业务逻辑,视图响应”的完整闭环

核心执行流程:

1.客户端发送请求

​ 用户通过浏览器/客户端向服务器发送HTTP请求,请求url被DispatcherServlet(前端控制器)接收

2.DispatcherServlet调用HandlerMapping

  1. DispatcherServlet 不直接处理请求,而是委托 HandlerMapping(处理器映射器) 查找 “哪个处理器(Controller)能处理该请求”。
  2. HandlerMapping 根据请求 URL、请求方法(GET/POST)等信息,匹配对应的 Handler(处理器,即 Controller 中的方法),并返回一个 HandlerExecutionChain(包含 Handler 和拦截器)

3.DispatcherServlet调用HandlerAdapter

DispatcherServlet获取到Handler后,通过HandlerAdapter(处理器控制器)去执行Handler(因为Handler可能是多种形式的,如注解式Controller、XML配置的Controller,Adapter负责统一适配)

4.HandlerAdapter执行Handler(Controller方法)

HandlerAdapter调用Controller中对应的方法(如UserController.list()),执行业务逻辑(可能调用Service,Dao层),处理完成后返回一个ModelAndView对象(包含数据模型Model和视图名称ViewName)

5.执行拦截器的postHandle方法

若存在拦截器(如登录校验、日志记录),在Handle执行后、视图渲染前,会调用拦截器的postHandle()方法(可对ModelAndView进行修改)

6.DispatcherServlet调用ViewResolver

DispatcherServlet接收返回的ModelAndView后,委托ViewResolver(视图解析器)根据视图名称解析出具体的View(视图对象,JSP、Thymeleaf模板)

  • 例如:ViewResolver 可能将视图名称 list 解析为 /WEB-INF/views/user/list.jsp

7.ViewResolver返回View对象

ViewResolver将解析后的View对象返回给DispatcherServlet

8.View渲染数据

DispatcherServlet调用View对象的render()方法,将Model中的数据(如用户列表)填充到View中(如JSP页面的${users}变量),生成最终的HTML响应

9.执行拦截器的afterCompletion方法

视图渲染完成后,调用拦截器的afterCompletion()方法(可用于资源清理,如关闭流)

10.DispatcherServlet返回响应

将渲染后的HTML响应发送给客户端(浏览器),完成异常请求

11.流程结束

客户端接收响应并展示页面。

image-20251028154956762

组件名称 作用核心 角色
DispatcherServlet 中央调度,协调所有组件 前端控制器
HandlerMapping 根据请求查找对应的 Controller 方法 处理器映射器
HandlerAdapter 适配并执行 Controller 方法 处理器适配器
Controller 处理业务逻辑,返回 ModelAndView Handler处理器,业务逻辑
ViewResolver 将视图名解析为具体视图(如 JSP) 视图解析器
View 渲染数据,生成响应(如 HTML) 视图
拦截器(Interceptor) 拦截请求 / 响应,执行额外逻辑(如登录验证) 质检员(检查菜品质量)

image-20251028155650751

http://www.hskmm.com/?act=detail&tid=40450

相关文章:

  • 贪心训练
  • 多线程基础-创建线程
  • 2025年上海直连全球云网络公司权威推荐榜单:AIGPU专用算力/GPU计费模式/GPU弹性算力源头厂家精选
  • 打开双wifi STA+AP并发 - M
  • dataframe 和 numpy 数组有什么不同?
  • 离散化
  • 2025年密集母线槽品牌
  • 2025年口碑好的密集母线槽产品
  • 2025年密集母线槽品牌排行榜
  • 10 28
  • 混合动力汽车MATLAB建模实现方案
  • 2025年口碑好的模压托盘品牌top5排名
  • 2025年模压托盘品牌前十强权威评测:江苏同芯木业引领行业变革
  • 2025年模压托盘品牌深度分析与推荐排行榜
  • 2025年模压托盘源头厂家综合实力前十排行榜
  • MATLAB使用内点法解决凸优化问题的原理和实现
  • Everything下载安装教程:中文免费版下载 + 图文安装步骤(2025最新版)
  • 2025年小型风力发电机厂家权威推荐榜单:水平轴风机发电机/风光储一体化系统/垂直轴风机发电机源头厂家精选
  • 2025年口碑好的冷弯型钢品牌:华力冷弯型钢深度解读
  • 2025口碑好的冷弯型钢品牌/厂家推荐
  • 2025冷弯型钢源头厂家榜单前十
  • 2025年冷弯型钢品牌
  • 如何在Windows下开发输入法:Mini How to
  • 2025 年 10 月盐城公司变更,盐城地址挂靠,盐城商标注册公司最新推荐,聚焦资质、案例、售后的五家公司深度解读
  • 第一天学习
  • 脑电数据PCA处理及SVM分类
  • T671195 于凋亡季节中的我们
  • Ollama API 交互
  • K3s + Sysbox:让容器拥有“虚拟机的灵魂”
  • 题解:AT_abc200_e [ABC200E] Patisserie ABC 2