Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它
的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为“Spring
MVC”。
MVC 是 Model View Controller (模型视图控制器)的缩写,它是软件⼯程中的⼀种软件架构模式,
它把软件系统分为模型、视图和控制器三个基本部分。

Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取
数据。
View(视图) 是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。
Controller(控制器) 是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,控制⽤户输⼊,并向模型发送数据。
MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。
总结来说,Spring MVC 是⼀个实现了 MVC 模式,并继承了 Servlet API 的 Web 框架。既然是 Web
框架,那么当⽤户在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤户的请求.
Spring MVC 项⽬创建和 Spring Boot 创建项⽬相同,在创建的时候选择 Spring Web 就相当于创建了 Spring MVC 的项⽬。

学习 Spring MVC 我们只需要掌握以下 3 个功能:
对于 Spring MVC 来说,掌握了以上 3 个功能就相当于掌握了 Spring MVC
通过RequestMapping进行连接,在SpringBoot中已经演示过了。






既支持 GET 请求 又 支持 POST 请求

当然@RequestMapping也能指定只支持一种请求
Get


Post









如果某天前端的参数名字与后端参数名字不一致,而你的写的代码很多了不想改了,就可以使用这个方法:


修改:


然而这样写会引发一个问题,当传递参数为空时,会报错:

解决办法:


当我们在前端发送一个JSON对象时,后端能否接收到呢?
显然并没有接收到!
因此需要加上这个注解

注意::这里的是@RequestBody 和 类上的ResponseBody是不一样的

注意:这里的URL和参数部分是不同的:

我们获取的不再是?后面的参数而是/前后的参数。


注意:路径参数名字需与方法参数名字相同

使用postman模拟一下



访问后大概率是这样的,因为我们没有存储Cookie
添加一个即可














注意:在Spring中返回map默认就是一个json数据格式的对象。
- 请求转发: forward 服务器帮客户进行请求转发并将结果响应给客户端, URL 地址是不变的
- 请求重定向: redirect 服务器端将请求重新定义到要访问的地址上, URL 地址会发生改变
请求转发和请求重定向的区别:
- 请求转发 URL 地址不变, 因为服务器端进行转发和响应.
- 请求重定向 URL 地址发生改变, 因为服务器端直接将请求重定向到具体的地址上
- 使用请求转发那么有可能外部资源全部会丢失, 访问不到.
- 请求重定向是直接重定向到 URL地址了, 所以不会存在外部资源丢失的情况
- 重定向浏览器会发送两条请求,转发,只有一条请求。
举个例子:
- 请求重定向:张三找李四借钱,李四没钱,但李四告诉张三,去王五那里看看。张三借到了。结果张三跑了,这个时候,李四是不担责任了。因为钱是张三借的。
- 请求转发:张三找李四借钱,李四没钱,但李四去找王五那里借了一些钱,然后借给给了张三。
结果张三跑了,王五找谁还?肯定找李四啊!因为是李四找他借的钱。