type
status
date
slug
summary
tags
category
icon
password
能力模型
能力分类
省赛
全球总决赛
学习进度
中国总决赛
文章前言:
MVC是模型(Model)、视图(View)和控制器(Controller)的缩写。这一软件架构模式诞生于20世纪70年代后期,被用于创建桌面应用。
⭐ MVC模式
1.什么是MVC,为什么使用它?
在计算机科学中,MVC是一种软件设计模式,这种模式将应用代码组织成三个相互交织的部分——模型、视图和控制器。
- 最上面的一层,是直接面向最终用户的视图,视图是用户接口和交互,他是提供给用户的操作界面;
- 中间一层控制器是视图和数据库之间的中介,接受和处理视图的请求和行为,并和模型沟通用户的需求,然后返回响应给视图供用户使用,类似于我们所说的“接口”。
- 最下面一层模型(或者说是数据)是与数据库交互的逻辑,负责从数据库获取数据的逻辑,同样也可以选择JSON文件来提供数据;
大多数情况下,视图不直接和模型交互——这个功能由控制器执行。
在其他一些框架中,模型与视图直接交互。
MVC设计模式旨在将应用代码分成各自的单位,来简化维护和优化。这种方式被称为“关注点分离”。
2.哪些语言和框架使用MVC?
过去,MVC仅被用于桌面(GUI图形用户界面),现在许多语言和框架也使用MVC来设计web应用。
- 使用MVC的编程语言包括:C、 C++、C#、 Java、 Ruby、 Smalltalk等。
- 使用MVC的框架包括:Angular、 Express、 Django、 Flask、 Laravel、 Ruby on rails等。
应用实例:
- Web应用程序:用户通过浏览器(视图)发送请求,服务器端的控制器处理请求,模型进行数据处理。
- 这段代码展示了一个简单的MVC模式(模型-视图-控制器)的实现,其中
Student
作为模型,StudentView
作为视图,StudentController
作为控制器,负责协调模型与视图之间的交互。
3.MVC模式 VS 三层架构
和 MVC 模式类似,三层架构同样将系统划分成了 3 层:
- 表示层(UI):用来实现与用户的交互,接收用户请求,并将请求交给业务逻辑层(BLL)和数据访问层(DAL)进行处理,最后将处理结果返回给用户。
- 业务逻辑层(BLL):起到承上启下的作用,接收表示层传递来的请求,并针对业务对数据进行处理,以实现业务目标。
- 数据访问层(DAL):用于实现与数据库的交互和访问,例如从数据库中获取数据、保存或修改数据库中的数据等。
三层架构和 MVC 模式中各层对应关系如下:
- 三层架构中的表示层(UI)包含 HTML、JSP 等前台页面以及后台的 Servlet,即它相当于 MVC 模式中的 View 层 + Controller 层。
- 三层架构中的业务逻辑层(BLL),则只包含了 Service 接口及其实现类(Servicelmpl)的代码,即它相当于 MVC 模式中 Model 层的一部分,并不包含 Dao 和实体类。
- 三层架构中的数据访问层(DAL),则只包含了 Dao 接口及其实现类(DaoImpl)的代码,即它相当于 MVC 模式中 Model 层的一部分,并不包含 Service 和实体类。
4.Spring MVC
Spring MVC(全称 Spring Web MVC)是 Spring 框架提供的一款基于 MVC 模式的轻量级 Web 开发框架,是 Spring 为表示层(UI)开发提供的一整套完备的解决方案。
Spring MVC 使用 MVC 架构模式的思想,将 Web 应用进行职责解构,把一个复杂的 Web 应用划分成模型(Model)、控制器(Contorller)以及视图(View)三层,有效地简化了 Web 应用的开发,降低了出错风险,同时也方便了开发人员之间的分工配合。
Spring MVC 各层的职责如下:
- Model:负责对请求进行处理,并将结果返回给 Controller;
- View:负责将请求的处理结果进行渲染,展示在客户端浏览器上;
- Controller:是 Model 和 View 交互的纽带;主要负责接收用户请求,并调用 Model 对请求处理,然后将 Model 的处理结果传递给 View。
Spring MVC 本质是对 Servlet 的进一步封装,其最核心的组件是 DispatcherServlet,它是 Spring MVC 的前端控制器,主要负责对请求和响应的统一地处理和分发。Controller 接收到的请求其实就是 DispatcherServlet 根据一定的规则分发给它的。
Spring MVC 框架内部采用松耦合、可插拔的组件结构,具有高度可配置性,比起其他的 MVC 框架更具有扩展性和灵活性。此外,Spring MVC 的注解驱动(annotation-driven)和对 REST 风格的支持,也是它最具有特色的功能。
Spring MVC 是 Spring 框架的众多子项目之一,自 Spring 框架诞生之日起就包含在 Spring 框架中了,它可以与 Spring 框架无缝集成,在性能方面具有先天的优越性。对于开发者来说,Spring MVC 的开发效率要明显高于其它的 Web 框架,因此 Spring MVC 在企业中得到了广泛的应用,成为目前业界最主流的 MVC 框架之一。
有关MVC架构的问题,欢迎您在底部评论区留言,一起交流~
- Author:Koreyoshi
- URL:https://Koreyoshi1216.com/article/10cc7b13-c6a7-803e-bb61-f162a126cd71
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts