题目:什么是 MVC?
难度:difficulty/low
评分:⭐⭐⭐☆☆(3/5)
MVC 是一种架构模式,核心是通过分层将业务实现的复杂度进行拆分,将业务拆分为 M 模型层、V 视图层、C 控制层,每层做自己的事情,降低实现复杂度。MVC 是当前最常用的 Web 功能实现模型,springMVC 框架就是基于 MVC 模型命名的。
优点:抓准"分层拆复杂度"本质,M/V/C 职责划分正确。
不足:未讲三层各自细节(C 协调 / V 展示 / M 业务+数据);未提 springMVC 的 DispatcherServlet/HandlerMapping/ViewResolver 链路。
补充:MVC vs 三层架构 vs 前后端分离的关系。
最后更新:2026-10-27 · 基于第 1 次作答
结论:MVC 是表现层架构模式,把"处理请求"和"展示结果"分离为 M/V/C 三块,降低耦合。 关键词:模型业务数据 · 视图渲染 · 控制器协调 边界:只解决表现层,不替代三层架构;前后端分离时 V 交给前端。
核心考点定位:考察是否理解 MVC 的职责边界(不是业务分层),以及 springMVC 的请求处理链路。面试官想排除"把 MVC 当成整个系统分层"的错误认知。
机制链(≥3 环):
证据锚点(≥6):
DispatcherServlet:前端控制器,所有请求经它分发HandlerMapping:找 Controller,如 RequestMappingHandlerMappingViewResolver:根据视图名找 ViewController:接收请求、调 Service、返回 ModelAndView/数据Model:业务数据 + 业务逻辑View:渲染展示对比与权衡:
| 方案 | 正确性 | 成本 | 失败模式 | 适用边界 |
|---|---|---|---|---|
| MVC(同步渲染) | 职责清晰 | 中 | C 臃肿、V 依赖后端模板 | 服务端渲染 |
| 前后端分离 | 前后解耦 | 高(联调) | C 只出 JSON,需约定接口 | 大型前端/多端 |
| 三层架构 | 分层清晰 | 低 | 与 MVC 混为一谈 | 系统分层(非请求模型) |
常见误区:
适用边界:MVC 只适用"请求-响应"的 Web 场景;非 Web 系统(如消息消费、定时任务)没有 V,不套 MVC;前后端分离后 V 移交给前端,后端只剩 C+M。
【结论】 面试官您好,MVC 是表现层的架构模式,把"处理请求"和"展示结果"分离成 M/V/C 三块,降低耦合、便于维护。
【三点】 第一,M 是模型——业务数据和业务逻辑,比如订单金额计算、库存扣减都在 M;V 是视图——只负责渲染,不写业务;C 是控制器——接收请求、调模型、选视图,是协调者。第二,价值是分离关注点:展示和业务解耦,V 可换、C 可测、M 可复用,多人协作互不干扰。第三,springMVC 里 DispatcherServlet 是前端控制器,所有请求先进它,经 HandlerMapping 找到对应 Controller,Controller 调 Service 处理业务,拿到数据后用 ViewResolver 找 View 渲染返回,形成完整链路。
【边界】 当然,MVC 只管表现层,不替代三层架构(表现/业务/持久);前后端分离时 V 移交给前端,后端 Controller 只返回 JSON,此时 MVC 里的 V 就弱化掉了。
| # | 日期 | 评分 | 本轮主要问题 | 记录 |
|---|---|---|---|---|
| 1 | 2026-10-27 | 3/5 | 未讲三层细节与 springMVC 链路 | 第 1 次 |