大家好,我是程序员牛肉。
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模式认为:从后台拉取信息展示到应用界面的过程可以大致分为三个模块:
通过MVC这种设计模式,我们成功的标准化了从后台拉取信息展示到页面这一过程。
用户在软件界面(view)中点击按钮,控制器(Controller)会处理这个请求,通知Model来查询所需要的数据,Model查询好之后,控制器(Contorller)会通知软件界面(view)显示这个数据
让我们用更加标准的语言来定义一下这三个模块:
模型(Model):
模型负责处理应用程序的数据逻辑,比如数据库读写、数据验证等,它代表应用程序的数据和业务规则,是应用程序的“大脑”,模型不直接与用户界面交互,而是通过控制器与视图交互。
视图(View):
视图是应用程序的用户界面,负责显示数据(即模型的数据)并且接收用户的输入,视图可以是任何形式的输出,比如图形界面、网页或文本输出,视图从控制器接收数据,并在用户进行交互时将用户的操作反馈给控制器。
控制器(Controller):
控制器是模型和视图之间的中介。它接收用户的输入,并根据这些输入调用模型和视图进行相应的处理,控制器处理用户请求,决定调用哪个模型组件来处理请求,并选择适当的视图来显示结果,控制器是应用程序的“指挥者”,它协调模型和视图的交互,确保应用程序的流程正确进行。
MVC这种设计模式可以用图表示为:
这其实就是MVC模式,可以看出它和前面讲的三层架构毫无关系。因此不要再把三层架构模式和MVC模式搞乱
而所谓的Spring MVC其实就是尝试用Spring 去实现MVC这种设计模式。
Spring MVC 实现 MVC 设计模式的方式,是通过提供一套完整的框架机制,将 Web 应用程序的业务逻辑、数据和用户界面明确分离。在这种模式下,控制器作为中心协调者,接收用户的输入并调用模型来进行处理,然后将处理结果传递给视图以呈现给用户。
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。