SpringMvC

Spring MVC 是 Spring Boot 的"全家桶"成员,它被默认内置了。

  • 它不是一种"空洞"的规范:它是一套已经写好的、非常庞大的 Java 代码库。

  • 它是"开箱即用"的 :当你创建一个 Spring Boot 项目并勾选了 Spring Web 依赖时,你就已经"安装"了它。你不需要去官网上下载安装包,也不需要像安装数据库那样配置环境,它就像你手机出厂自带的"系统拨号软件"。

🏢 Spring MVC:写字楼物业管理系统

如果你的后端程序是一座写字楼 ,Spring MVC 就是这栋楼的物业管理处 。它的核心任务是:接待访客、安全检查、引导带路、分发快递。

一、 MVC 的三大部门

缩写 全称 写字楼里的角色 实际作用
M Model (模型) 仓库/档案室 存放公司数据(如:员工名单、合规文件)。
V View (视图) 公司的招牌/装修 客户看到的门面(在现代开发中,通常是 Vue 等前端渲染)。
C Controller (控制器) 前台接待员 听客户要找谁,然后打电话给对应部门处理。

二、 一次访问的全路径(工作原理)

1. DispatcherServlet(写字楼大门)

这是 Spring MVC 的核心,叫**"中央分发器"**。

  • 场景:访客(浏览器请求)来到写字楼大门口。

  • 作用:所有的请求第一站都会到这里,由它决定接下来该去哪。

2. HandlerMapping(楼层指引牌)
  • 场景:访客说"我要找研发部"。

  • 作用 :大门接待员看一眼指引牌(Mapping),发现研发部在 8 楼(对应你代码里的 @RequestMapping("/dev"))。

3. Interceptor(走廊保安)
  • 场景:访客坐电梯到了 8 楼,出电梯时被保安拦住了。

  • 作用 :这就是你写的拦截器。保安查你的工作证(Token)。

    • 白名单:你是来送外卖的,走廊墙上贴着"外卖员免检",保安直接让你过去。

    • 拦截:你是陌生访客且没带证件,保安直接把你轰走(返回 401/403)。

4. Controller(部门接待)
  • 场景:你通过了保安检查,进入了研发部办公室。

  • 作用:部门主管(Controller)听取你的需求,去档案室(Model)取了一份文件,然后交给你。

5. ViewResolver / JSON Converter(翻译/打包)
  • 场景:主管给你的文件是中文的,但你是外国人。

  • 作用 :物业会帮你把文件翻译成你听得懂的语言(比如把 Java 对象转成 JSON 字符串),并打包好。


三、 核心组件的通俗解释

1. 过滤器 (Filter) ------ 大楼外的红绿灯

过滤器在写字楼大门外。它不归物业管,归交警管(Servlet 容器)。

  • 作用:检查车辆是否超载、是否限号(比如设置字符编码、全局防攻击拦截)。它在进入大楼(Spring MVC)之前就开始工作了。
2. 拦截器 (Interceptor) ------ 楼层保安

拦截器是物业(Spring MVC)自己请的员工。

  • 作用:它能精确知道你找的是哪个部门。它在访客进入办公室(Controller)之前伸手拦住你。
3. 跨域配置 (CORS) ------ 访客准入协议
  • 场景:写字楼规定,只有从"友好合作伙伴"街道过来的访客才给开门。

  • 作用:配置哪些外部网站(域名)可以调用本楼的服务。


四、 为什么需要 Spring MVC?

如果没有 Spring MVC,你就像在荒地里盖房子:

  1. 没指引牌 :你得写无数个 if-else 判断 URL。

  2. 没保安:你得在每个办公室门口都写一套查证件的代码。

  3. 没翻译:你得手动把每一个 Java 对象拼接成 JSON 字符串发给前端。

Spring MVC 的存在,就是为了让后端开发从"盖房子"变成"在写字楼里开公司"。 你只需要关心你的业务(研发部在干嘛),剩下的交通、安保、翻译、打包,物业全都帮你做好了。

相关推荐
LaughingZhu7 分钟前
Product Hunt 每日热榜 | 2026-05-21
前端·人工智能·经验分享·chatgpt·html
怕浪猫13 分钟前
Electron 开发实战(一):从零入门核心基础与环境搭建
前端·electron·ai编程
小鹏linux1 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
前端若水2 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
Bigger2 小时前
mini-cc:一个轻量级 AI 编程助手的诞生
前端·ai编程·claude
涵涵(互关)2 小时前
Naive-ui树型选择器只显示根节点
前端·ui·vue
BY组态2 小时前
Ricon组态系统最佳实践:从零开始构建物联网监控平台
前端·物联网·iot·web组态·组态
BY组态2 小时前
Ricon组态系统vs传统组态软件:为什么选择新一代Web组态平台
前端·物联网·iot·web组态·组态
SoaringHeart2 小时前
Flutter进阶:OverlayEntry 插入图层管理器 NOverlayZIndexManager
前端·flutter
放下华子我只抽RuiKe53 小时前
React 从入门到生产(四):自定义 Hook
前端·javascript·人工智能·深度学习·react.js·自然语言处理·前端框架