【JavaEE进阶】初始Spring Web MVC

🌴什么是Spring Web MVC?

官⽅对于SpringMVC的描述是这样的:

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

我们可以看到spring-webmvc是由spring-boot-starter-web引的,所以在上篇文章中所创建的项目可以认为是一个springboot项目,也是一个springwebmvc项目,springwebmvc就是其中的一个模块,我们应用到这个模块,该模块就是一个springwebmvc项目,即springboot和springwebmvc项目并不冲突。注意:我们还发现两个版本不一致,是因为springboot 3.x的版本是应对springwebmvc 6.x的版本。

🚩什么是Servlet呢?

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

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

后续我们就简称为:Spring MVC

然⽽要真正的理解什么是SpringMVC?我们⾸先要搞清楚什么是MVC?

🎄MVC定义

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

  • View(视图)指在应⽤程序中专门用来与浏览器进行交互,展示数据的资源
  • Model(模型):是应用程序的主体部分,用来处理程序中数据逻辑的部分
  • Controller(控制器) :可以理解为一个分发器,用来决定对于视图发来的请求,需要用哪一个模型来处理,以及处理完后需要跳回到哪一个视图。即用来连接视图和模型

这个过程我们可以想象成去饭店吃饭

客⼾进店之后,服务员来接待客⼾点餐,客⼾点完餐之后,把客⼾菜单交给前厅,前厅根据客⼾菜单给后厨下达命令.后厨负责做饭,做完之后,再根据菜单告诉服务员,这是X号餐桌客⼈的饭.

在这个过程中

  • 服务员就是View(视图):负责接待客⼾,帮助客⼾点餐,以及给顾客端饭
  • 前厅就是Controller(控制器):根据⽤⼾的点餐情况,来选择给哪个后厨下达命令.
  • 后厨就是Model(模型):根据前厅的要求来完成客⼾的⽤餐需求

🚩理解Spring MVC

当我们知道知道了MVC后,就能更好的理解Spring MVC了。

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

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

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

  1. MVC
  2. Web框架

SpringMVC 全称是SpringWebMVC

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

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

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

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

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

⽐如:厨房可以⽤来做饭,但真实实现做饭功能的是⽕以及各种做饭相关的⻝材和⼯具.

厨房就好⽐是SpringBoot,厨房可以装柜⼦,实现收纳功能,装燃⽓灶等,实现做饭功能.做饭这个事,就是MVC,在⼏千年前,有⽕有⻝材就可以实现做饭.

简单的来说就是springboot并没有去实现mvc,但是它把别人实现的mvc集成进来了,让我们创建springmvc更加方便了。

我们需要记住的是Spring MVC是一种思想,这种思想可以有很多方式来实现,而SpringBoot就是其中的一种。

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

现在都是实现前后端分离了,视图这一块不归后端了,spring是一个后端框架,前端不用这个框架,后端就变成了Controller和Model了,即浏览器发起请求直接到达Controller了。

述图虽然变了,但是核心没有变。继续举上面讲MVC的时候的那个吃饭的例子。现在的这个模型可以理解为

去饭店吃饭.⼀些饭店是前厅来负责接待客⼾,帮助客⼾点餐,也就是Controller来 负责接收⽤⼾的请求;去公司⾯试,直接由⾯试官来接待候选⼈,省去了HR中间的交接过程

🍀如何学习Spring MVC呢?

既然是 Web 框架, 那么当⽤⼾在浏览器中输⼊了 url 之后,我们的Spring MVC项⽬就可以感知到⽤⼾的请求,并给予响应.

咱们学习Spring MVC,重点也就是学习如何通过浏览器和⽤⼾程序进⾏交互.

主要分以下三个⽅⾯:

  1. 建⽴连接: 将⽤⼾(浏览器)和Java程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring程序。
  2. 请求: ⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数,所以请求这块主要是获取参数的功能.
  3. 响应: 执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤⼾,也就是响应.

⽐如⽤⼾去银⾏存款

  1. 建⽴连接:去柜台

  2. 请求:带着银⾏卡,⾝份证去存款

  3. 响应:银⾏返回⼀张存折.

对于Spring MVC来说,掌握了以上3个功能就可以学好Spring MVC.

相关推荐
brrdg_sefg8 分钟前
gitlab代码推送
java
hanbarger32 分钟前
mybatis框架——缓存,分页
java·spring·mybatis
cdut_suye39 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
苹果醋31 小时前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
小蜗牛慢慢爬行1 小时前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
azhou的代码园1 小时前
基于JAVA+SpringBoot+Vue的制造装备物联及生产管理ERP系统
java·spring boot·制造
wm10432 小时前
java web springboot
java·spring boot·后端
smile-yan2 小时前
Provides transitive vulnerable dependency maven 提示依赖存在漏洞问题的解决方法
java·maven
老马啸西风2 小时前
NLP 中文拼写检测纠正论文-01-介绍了SIGHAN 2015 包括任务描述,数据准备, 绩效指标和评估结果
java
Earnest~2 小时前
Maven极简安装&配置-241223
java·maven