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

相关推荐
Smoothzjc17 小时前
👉 求你了,别再裸写 fetch 做 AI 流式响应了!90% 的人都在踩这个坑
前端·人工智能·后端
沛沛老爹17 小时前
Web开发者进阶AI:Agent技能设计模式之迭代分析与上下文聚合实战
前端·人工智能·设计模式
yong999017 小时前
基于MATLAB的大变形悬臂梁求解程序
前端·数据库·matlab
Swift社区17 小时前
ArkTS Web 组件里,如何通过 javaScriptProxy 让 JS 同步调用原生方法
开发语言·前端·javascript
小和尚敲木头17 小时前
记录一次vue3中this引发的开发没有问题,生产发生问题的分析
前端·vue
TttHhhYy18 小时前
小记,antd design vue的下拉选择框,选项部分不跟着滑动走,固定在屏幕某个部位,来改
前端·vue.js·sql
小二·18 小时前
Python Web 全栈开发实战教程:基于 Flask 与 Layui 的待办事项系统
前端·python·flask
光影少年18 小时前
vite为什么速度快?
前端·学习
boooooooom18 小时前
Vue3 宏编译的限制与解决方案:深入理解与实践突破
vue.js