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

SpingMVC学习小记

前言

SpringMVC是Java后端面试必考高频知识点,不管是SpringBoot零基础开发,还是八股文面试,五大组件、执行流程、拦截器三大考点几乎必问。

本文摒弃晦涩源码废话,用大白话+流程链路拆解,零基础能看懂,面试直接背诵,全文适配当下前后端分离开发场景,剔除老旧JSP冗余知识点。


一、什么是SpringMVC?(面试标准作答)

SpringMVC 是Spring 框架专属Web层模块,基于经典MVC设计模式开发,全权接管项目中HTTP请求接收、分发、业务处理、结果响应全流程。

日常开发所有SpringMVC常用功能

我们日常CRUD开发用到的功能,全部归属SpringMVC管控:

  • 接口注解:@RestController、@RequestMapping、@GetMapping等路由注解

  • 参数能力:URL参数、JSON参数接收、类型自动转换、参数校验

  • 响应能力:后端实体类自动序列化返回JSON数据

  • 拓展能力:自定义拦截器、全局跨域、文件上传、请求封装

SpringBoot适配要点

SpringBoot项目默认自动集成SpringMVC,零xml配置、开箱即用,开发者无需手动整合依赖、配置核心调度器。

核心定位总结

核心链路:前端HTTP请求 → 后端接口业务处理 → 格式化结果响应前端


二、SpringMVC 五大核心组件(面试重中之重)

SpringMVC整套请求流转,完全依靠5大组件分工协作、配合完成,牢记每个组件核心职责+大白话别称,面试秒答。

1. DispatcherServlet 前端控制器

别称:总调度、大管家、中枢核心

职责:项目所有HTTP请求统一入口,拦截全部浏览器请求,负责调度、统筹其余四大组件,把控整条请求完整生命周期,SpringMVC最核心组件。

2. HandlerMapping 处理器映射器

别称:找路员、接口匹配器

职责:根据请求URL地址、请求方式(GET/POST/PUT/DELETE),匹配项目中对应的Controller接口方法,最终返回处理器执行链(目标Handler + 拦截器链)

3. HandlerAdapter 处理器适配器

别称:执行人、适配工具

职责:承接映射器匹配好的Controller方法,完成接口参数绑定、数据类型转换、参数合法性校验,通过反射调用业务接口,适配各类格式请求执行。

4. ViewResolver 视图解析器

别称:页面渲染器

重点考点当下前后端分离项目基本废弃不用

职责:老旧JSP单体项目专用,根据视图名称匹配后端页面资源;现在项目统一返回JSON数据,视图解析器直接失效,无需配置。

5. Handler 处理器

大白话解释:开发者手写的Controller接口方法

职责:执行业务逻辑、调用Service业务层、联动Mapper操作数据库,真正完成业务数据处理。


三、SpringMVC 完整执行流程(面试必背流程)

极简总链路(背诵版)

浏览器HTTP请求 → Tomcat容器 → DispatcherServlet → HandlerMapping → HandlerAdapter → Controller → Service → Mapper → 逐层结果返回 → 框架自动JSON序列化 → 响应前端

分步超详细拆解(可直接面试口述)

第1步:发起请求

前端浏览器、Axios、Postman等客户端发起HTTP请求,例如:/user/login,请求被服务端Tomcat容器接收。

第2步:Tomcat转交请求

Tomcat只做请求接收,不处理任何业务逻辑,直接将全部请求转交SpringMVC核心调度:DispatcherServlet。

第3步:匹配接口路由

DispatcherServlet调用HandlerMapping,根据请求地址、请求方式匹配对应Controller接口;匹配成功后返回处理器执行链(接口方法+拦截器)。

第4步:获取执行适配器

前端控制器获取适配当前接口的HandlerAdapter,交由适配器全权执行接口逻辑。

第5步:参数自动处理

HandlerAdapter自动完成全套参数操作:

  • 解析Path参数、Form参数、Body JSON参数

  • 完成字符串、基本类型、实体类自动类型转换

  • 执行@Valid参数校验、异常封装

  • 封装参数,赋值给Controller方法入参

第6步:执行业务代码

适配器通过反射执行Controller接口方法,Controller调用Service层业务代码,Service调用Mapper层操作数据库,完成完整业务读写。

第7步:接口返回业务数据

业务执行完毕,Controller统一返回自定义Result、分页实体、字符串、POJO实体等数据。

第8步:自动JSON序列化

前后端分离架构下,SpringMVC内置Jackson工具,自动将后端Java对象转为JSON字符串,开发者无需手动转换。

第9步:响应前端,请求结束

DispatcherServlet封装响应报文,通过HttpServletResponse输出流将JSON数据返回客户端,单次HTTP请求生命周期完结。


四、SpringMVC拦截器:执行时机+业务场景

拦截器是SpringMVC原生功能,区别于Filter过滤器,仅管控Controller接口请求,面试常考执行顺序、使用场景、和过滤器区别。

完整执行顺序(从上至下执行)

  1. 请求进入DispatcherServlet

  2. HandlerMapping完成接口路由匹配

  3. preHandle() 前置拦截:返回true放行请求,返回false直接截断请求、终止流程

  4. 执行目标Controller接口业务方法

  5. postHandle() 后置处理:Controller执行完毕,视图渲染之前执行

  6. afterCompletion() 最终回调:请求全部处理完毕、响应结束后最终执行,多用于资源释放

企业常用业务场景

  • JWT、Token登录身份校验拦截

  • 接口权限校验、角色权限管控

  • 全局请求日志、响应日志打印

  • 接口限流、非法请求拦截

  • 统一全局跨域配置、请求头封装

http://www.gsyq.cn/news/1580719.html

相关文章:

  • Codex插件化集成:让OpenAI代码能力无缝接入Claude Code
  • 生存的警报:解读自然与社会中的危险信号
  • CTLA-4:兼具自身免疫与肿瘤调控功能的核心免疫检查点靶点
  • $海贼王, the first Chinese Meme coin,minting on June 23, 2026 at UTC 04:00.
  • Cursor第三方模型接入:用中转服务突破上下文限制
  • polygon出题教程
  • Vibe Coding实战:Vue3管理后台的AI协同开发流
  • 从Web命令注入到Linux SUID提权:一次完整的渗透测试实战解析
  • 【VibeCoding系列教程16】 我的AI工具箱
  • Crawler之Tool:Scrapling的简介、安装和使用方法、案例应用之详细攻略
  • 海量数据如何解决?位图和布隆过滤器来帮你
  • Qwen3.7-Max原生智能体:从问答模型到自动干活的Agent跃迁
  • Ubuntu 18.04 安装 Anaconda 兼容性问题与修复方案
  • Go context.Context 原理与工程实践:控制流统一管理指南
  • Ubuntu 20.04 + MySQL 8.0 构建三节点MGR高可用集群实战
  • 银河麒麟V10安装Wireshark:权限配置与抓包实战指南
  • 2026年外贸独立站建站全攻略:从SEO到GEO,你的网站正在被AI“面试”
  • 嵌入式测试第 40 天:智能手表/手环嵌入式测试拆解
  • 1023. 【USACO题库】2.1.4 Healthy Holsteins健康的好斯坦奶牛
  • React对接DigitalOcean API:从零搭建前端数据流水线
  • 后端开发必看!6种服务端主动推送方案的实战对比
  • 深度解析:抖店行业资质与商品创建合规体系及实操准则
  • AI Agent核心原理与工程落地五模块详解
  • App Platform自定义域名、SSL与CDN配置原理与实战
  • Wireshark网络协议分析实战:从抓包入门到故障排查精要
  • Ubuntu 20.04 LEMP部署实战:Nginx+PHP7.4+MySQL8.0完整配置
  • 三步构建AI API使用数据自动化分析流水线:从账单到洞察
  • MC68010循环模式:硬件级指令优化与嵌入式性能提升
  • 2024年AIGC商业落地指南:从多模态大模型到实战应用
  • XSS攻击脚本全解析:从原理到实战绕过技巧与防御指南