前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >美团面试:什么是Spring MVC?如鲠在喉,答不上来?看我这一篇就搞懂了!

美团面试:什么是Spring MVC?如鲠在喉,答不上来?看我这一篇就搞懂了!

作者头像
程序员牛肉
发布2024-09-26 13:11:42
690
发布2024-09-26 13:11:42
举报
文章被收录于专栏:小牛肉带你学Java

大家好,我是程序员牛肉。

Spring MVC作为Java Spring下的一个热门框架,一直被广泛的应用在构建web应用程序中。因此有不少人会在自己的简历中写熟悉Spring MVC,结果面试官一问:“介绍一下Spring MVC”,瞬间傻了眼。

因此我们这篇文章来介绍一下什么是Spring MVC。

很多人对Spring MVC有一个误解。请看下图,你认为它是Spring MVC架构吗?

这是Spring MVC架构吗?如果你认为图片中的这种架构是Spring MVC,那就说明你对Spring MVC有明显的误解。

图片中的这种三层架构模式的设计,是一种软件架构模式。他与Spring MVC没有任何关系。不要想当然的认为这种架构就是Spring MVC。

到底什么是Spring MVC?我想我们要先介绍什么是MVC。

对于现在市面上的大部分应用软件来讲,我们都可以把这些应用程序简化成为从后台拉取信息展示到页面的过程。

为了让这一过程更加标准化,我们建立了MVC模式。

MVC模式认为:从后台拉取信息展示到应用界面的过程可以大致分为三个模块:

  • view(视图):负责展示数据的部分,可以简单理解为我们看见的页面
  • controller(控制器):负责通知model去拉取数据,通知view显示数据
  • model(model):负责拉取数据

通过MVC这种设计模式,我们成功的标准化了从后台拉取信息展示到页面这一过程。

用户在软件界面(view)中点击按钮,控制器(Controller)会处理这个请求,通知Model来查询所需要的数据,Model查询好之后,控制器(Contorller)会通知软件界面(view)显示这个数据

让我们用更加标准的语言来定义一下这三个模块:

模型(Model):

模型负责处理应用程序的数据逻辑,比如数据库读写、数据验证等,它代表应用程序的数据和业务规则,是应用程序的“大脑”,模型不直接与用户界面交互,而是通过控制器与视图交互。

视图(View):

视图是应用程序的用户界面,负责显示数据(即模型的数据)并且接收用户的输入,视图可以是任何形式的输出,比如图形界面、网页或文本输出,视图从控制器接收数据,并在用户进行交互时将用户的操作反馈给控制器。

控制器(Controller):

控制器是模型和视图之间的中介。它接收用户的输入,并根据这些输入调用模型和视图进行相应的处理,控制器处理用户请求,决定调用哪个模型组件来处理请求,并选择适当的视图来显示结果,控制器是应用程序的“指挥者”,它协调模型和视图的交互,确保应用程序的流程正确进行。

MVC这种设计模式可以用图表示为:

这其实就是MVC模式,可以看出它和前面讲的三层架构毫无关系。因此不要再把三层架构模式和MVC模式搞乱

而所谓的Spring MVC其实就是尝试用Spring 去实现MVC这种设计模式。

Spring MVC 实现 MVC 设计模式的方式,是通过提供一套完整的框架机制,将 Web 应用程序的业务逻辑、数据和用户界面明确分离。在这种模式下,控制器作为中心协调者,接收用户的输入并调用模型来进行处理,然后将处理结果传递给视图以呈现给用户。

  • 控制器:控制器在 Spring MVC 中充当用户的请求处理器,它通过注解与特定的 URL 模式绑定,拦截请求并根据请求类型调用相应的业务逻辑处理方法。处理完成后,控制器会确定数据模型并选择视图,但不会直接处理数据的展示,这是视图的责任。
  • 模型:模型是应用程序中封装数据和业务规则的部分。在 Spring MVC 中,模型通常是简单的 Java 对象,它们可以包含业务逻辑调用的结果,这些结果随后会被传递到视图。
  • 视图:视图在 Spring MVC 中负责呈现逻辑,它根据控制器提供的模型数据渲染最终的输出。Spring MVC 支持多种视图技术,允许开发者根据模型数据生成 HTML、XML 或 JSON 格式的响应。

Spring MVC 的核心组件 DispatcherServlet 作为前端控制器,负责整个请求的分发过程。它根据请求的 URL 将请求路由到相应的控制器,执行拦截器链,调用控制器方法,处理数据绑定和验证,然后根据控制器返回的逻辑视图名解析为具体的视图,进行渲染并返回响应。

此外,Spring MVC 还提供了拦截器和异常处理器等机制,允许开发者在请求处理的不同阶段插入自定义逻辑,如身份验证、日志记录或错误处理。依赖注入和组件扫描功能进一步简化了组件的配置和管理,使得开发者可以专注于业务逻辑的实现。

我们可以用一张图来描述Spring MVC是如何工作的:

讲到这里相信你已经了解什么是“Spring MVC”了,所谓的Spring MVC 其实就是基于Spring 去实现MVC这个设计模式。因此要想理解Spring MVC,就要先理解到底什么是MVC。

至于Spring 在代码层面是如何实现mvc这种设计模式的,国内的视频网站上有很多Spring MVC源码解读,感兴趣的同学可以自行搜索学习,在这里我就不做赘述了。

而我们的现实开发中,除了Spring mvc这种设计模式,还有DDD这种架构设计。感兴趣的同学可以自行搜索,或者评论区留言,我后续也会介绍。

下一篇文章,我们将介绍另外一个spring的框架:Spring Security。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员牛肉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档