什么是 Spring Web MVC?

官⽅对于 Spring MVC 的描述是这样的: 

SpringWebMVCistheoriginalwebframeworkbuiltontheServletAPIandhasbeenincluded intheSpringFrameworkfromtheverybeginning.Theformalname,"SpringWebMVC",comes fromthenameofitssourcemodule(spring-webmvc) 引⽤来⾃:https://docs.spring.io/spring-framework/reference/web/webmvc.html

翻译为中⽂:

SpringWebMVC是基于ServletAPI构建的原始Web框架,从⼀开始就包含在Spring框架中。它的 正式名称“SpringWebMVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"Spring MVC".

什么是Servlet呢?

Servlet是⼀种实现动态⻚⾯的技术.准确来讲Servlet是⼀套JavaWeb开发的规范,或者说是⼀套 JavaWeb开发的技术标准.只有规范并不能做任何事情,必须要有⼈去实现它.所谓实现Servlet规 范,就是真正编写代码去实现Servlet规范提到的各种功能,包括类、⽅法、属性等. Servlet规范是开放的,除了Sun公司,其它公司也可以实现Servlet规范,⽬前常⻅的实现了 Servlet规范的产品包括Tomcat、Weblogic、Jetty、Jboss、WebSphere等,它们都被称 为"Servlet容器".Servlet容器⽤来管理程序员编写的Servlet类.

从上述定义我们可以得出⼀个信息:SpringWebMVC是⼀个Web框架.

 下⾯咱们简称之为: Spring MVC

MVC 定义

MVC是ModelViewController的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分 为模型、视图和控制器三个基本部分

View(视图)  指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源.

Model(模型)  是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分.

Controller(控制器)可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型 来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型

例如:

⽐如去饭店吃饭

客⼾进店之后,服务员来接待客⼾点餐,客⼾点完餐之后,把客⼾菜单交给前厅,前厅根据客⼾菜单 给后厨下达命令.后厨负责做饭,做完之后,再根据菜单告诉服务员,这是X号餐桌客⼈的饭. 在这个过程中 服务员就是View(视图),负责接待客⼾,帮助客⼾点餐,以及给顾客端饭 前厅就是Controller(控制器),根据⽤⼾的点餐情况,来选择给哪个后厨下达命令. 后厨就是Model(模型),根据前厅的要求来完成客⼾的⽤餐需求

⽐如去公司⾯试

我们到了公司之后,HR会给我们安排会议室,根据候选⼈去通知不同的部⻔来安排⾯试,⾯试结束 后,由HR来告诉⾯试结果 在这个过程中 HR就是View(视图),负责接待候选⼈,并告知候选⼈⾯试结果不同的部⻔,就是Controller(控制器),HR根据候选⼈来选择对应的部⻔来进⾏⾯试 ⾯试官,就是Model层,来处理⾯试这个事情.

什么是Spring MVC?

MVC是⼀种架构设计模式,也是⼀种思想,⽽SpringMVC是对MVC思想的具体实现.除此之外, SpringMVC还是⼀个Web框架.

总结来说,SpringMVC是⼀个实现了MVC模式的Web框架.

所以,SpringMVC主要关注有两个点:

1. MVC

2. Web框架

Spring MVC 全称是Spring Web MVC

其实,SpringMVC我们在前⾯已经⽤过了,在创建SpringBoot项⽬时,我们勾选的SpringWeb框架 其实就是SpringMVC框架:

可以看到,SpringWeb的介绍是:

 Buildweb,includingRESTful,applicationsusingSpringMVC.UsesApacheTomcatasthedefault embeddedcontainer.

这时候可能有些学⽣就懵了,前⾯创建的不是SpringBoot项⽬吗?怎么⼜变成了SpringMVC项⽬?他们 之间到底有着什么样的关系?

SpringBoot是2014年发布的,Spring是2004年发布的,在2014年发布之前,就不能⽤Spring实现MVC 架构吗?显然不是了.

SpringBoot只是实现SpringMVC的其中⼀种⽅式⽽已.

SpringBoot可以添加很多依赖,借助这些依赖实现不同的功能.SpringBoot通过添加SpringWeb MVC框架,来实现web功能.

不过Spring在实现MVC时,也结合⾃⾝项⽬的特点,做了⼀些改变,相对⽽⾔,下⾯这个图或许更加合适 ⼀些.

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐