SpringMVC(1)初识MVC
文章目录
- SpringMVC(1)初识MVC
-
- [1. Spring MVC 的简介](#1. Spring MVC 的简介)
-
- [1.1 MVC 的定义](#1.1 MVC 的定义)
- [1.2 容器](#1.2 容器)
- [1.3 什么是 Spring MVC](#1.3 什么是 Spring MVC)
- [1.4 Spring MVC ,Spring Framework,SpringBoot 三者之间的关系(高频面试题)](#1.4 Spring MVC ,Spring Framework,SpringBoot 三者之间的关系(高频面试题))
- [2. 学习 Spring MVC](#2. 学习 Spring MVC)
- [3. @RestController](#3. @RestController)
- [4. @RequestMapping(建立连接的作用)](#4. @RequestMapping(建立连接的作用))
-
- 不加类路径后,有相同的方法路径
- 添加类路径的原因
- [' / ' 的作用](#‘ / ’ 的作用)
- 类路径相同
- 发起请求
- [5. Postman 软件的上手使用](#5. Postman 软件的上手使用)
- [6. Get请求](#6. Get请求)
-
- [让某一个方法,只支持 Get请求](#让某一个方法,只支持 Get请求)
- [1. 第一种方式:@RequestMapping()](#1. 第一种方式:@RequestMapping())
- [2. 第二种方式:@GetMapping()](#2. 第二种方式:@GetMapping())
- 总结:
- [7. Post请求](#7. Post请求)
-
- [让某一个方法,只支持 Post请求](#让某一个方法,只支持 Post请求)
- [1. 第一种方式:@RequestMapping()](#1. 第一种方式:@RequestMapping())
- [2. 第二种方式:@PostMapping()](#2. 第二种方式:@PostMapping())
- 总结:
- [8. Get请求 和 Post请求的区别](#8. Get请求 和 Post请求的区别)
- [9. @RequestMapping 手动设置多个请求方式](#9. @RequestMapping 手动设置多个请求方式)
- 10.总结:
1. Spring MVC 的简介
Spring Web MVC 基于 Servlet 的
Spring Web MVC 最开始就包含在 Spring Framework(Spring框架)
Spring Web MVC 也叫 Spring MVC
Servlet 框架,和 JDBC 一样,很古老了。
1.1 MVC 的定义
是软件工程中的一种软件架构设计模式,也是一种思想。
M:model模型:处理业务逻辑,处理数据
V:View视图:界面显示,人机交互(你网页能看到的东西,都可以认为是视图)
C:Controller控制器:选择处理模型,选择视图(相当于中转的一个东西,进行协调)

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

这种设计模型,现在已经不太使用了。
目前流行的是:前后端分离设计,将 View 给省去了。
1.2 容器
容器,是一个抽象的概念
在计算机行业当中,只要能装数据的东西,就能称为一个容器。
总之,很广泛的一个概念
1.3 什么是 Spring MVC
Spring MVC是一个实现了 MVC 的模式的 Web 框架。
1.4 Spring MVC ,Spring Framework,SpringBoot 三者之间的关系(高频面试题)
拿买火车票为例子:
SpringBoot :12306 软件
Spring Framework:火车,高铁
Spring MVC:车站售票点
我们现在都是用12306这个软件来抢高铁票的,但是,在 12306 出来之前,车站都是有售票点的。(Spring Web MVC 最开始就包含在 Spring Framework(Spring框架))
火车不能自己跑,需要对外提供服务(卖票),Spring MVC 就是 Spring 提供服务的方式,通过 Spring MVC,和 Spring 进行交互。
SpringBoot 也是 Spring 提供服务的一种方式(12306能卖火车票,高铁票),但是,SpringBoot 还可以订酒店,订外卖,不仅仅能和 Spring 进行交互,还可以有其他的服务。
可以这么说,SpringBoot 集成了很多东西,包含了 Spring MVC 的功能,SpringBoot 的功能更加强大,功能更加全面(等于对 Spring MVC 进行再次封装,用起来更加方便!!!)
12306 集成了 买高铁票 的服务,不需要再去火车站买高铁票了,但是,12306 不仅仅能卖高铁票,还能买保险,订酒店......
这三者专注的领域不同,解决的问题也不⼀样, 总的来说,Spring 就像⼀个⼤家族,有众多衍⽣产
品, 但他们的基础都是Spring, 用一张图表示 Spring MVC ,Spring Framework,SpringBoot 三者之间的关系:

所以,我们学习 Spring MVC,直接创建 SpringBoot 项目就可以了,因为 SpringBoot 已经集成了 Spring MVC 的功能。
2. 学习 Spring MVC
学习 Spring MVC主要学三点:
- 建立连接
- 请求
- 响应
建立连接,我们已经看过,使用 @RequestMapping() 这个注解来建立连接了,能够访问到服务器了。
3. @RestController
@RestController 注解是一个用于构建RESTful Web服务的重要工具。
说人话:使用了 @RestController 注解注释的类,Spring 先扫描这个类

让 Spring 来扫描 UserController 这个类。
4. @RequestMapping(建立连接的作用)
@RequestMapping() 作用:将特定的 URL 路径映射到相应的处理方法,从而实现对请求的处理
说人话:设置资源路径用的。
@RequestMapping("hello"),这个注解,既能给类进行注解,也能给 方法进行注解。
通过这个注解,我们可以 建立连接。

加在类,并且加在方法前,此时,资源路径为 : 类路径 + 方法路径
如上图:资源路径为:/user/m1

注意点:类路径可以不设置,但是,方法路径必须设置!
没有类路径,资源路径为:方法路径
没有方法路径,资源路径为:❌ ❌
必须要有方法路径 。
建议:给所有的的类,都加上类路径。
不加类路径后,有相同的方法路径
不加类路径后,如果有相同的方法路径,就会报错!

运行结果:

报错!
方法路径,重复,会发生错误。
添加类路径的原因
- 避免方法路径相同,出现错误
- 提高可读性
添加类路径的规律(规范):
HelloController :hello
UserController :user
取 XXXController 类的前缀。
' / ' 的作用
没有作用,是一种规范,建议加上!!!
多重路径的话,要省略的话,只能省略 最前面的 ' / '。

也不建议这么写!!!
类路径相同
类路径相同,无关紧要,只要你的方法路径,也不一样就可以。
也就是说:资源路径,是唯一的。
资源路径:类路径 + 方法路径
发起请求
发起请求,既可以是 Get,也可以是 Post。
@RequestMapping,即支持 Get 也支持 Post。
Get请求 和 Post请求,需要下载 Postman 这个软件来实现。
下载链接:Download Postman | Get Started for Free
5. Postman 软件的上手使用
第一步:创建项目:

第二步:发送请求

6. Get请求
通过浏览器来去发送的,都是 Get 请求。
通过浏览器访问服务器的,都是 Get 请求。
让某一个方法,只支持 Get请求
1. 第一种方式:@RequestMapping()
java
@RequestMapping(value = "hello2",method = RequestMethod.GET)
运用上述注解 @RequestMapping

hello2 这个方法,只支持 Get请求:
看运行结果:

2. 第二种方式:@GetMapping()
java
@GetMapping("/hello4")
使用 @GetMapping这个注解:

总结:
@RequestMapping(value = "hello2",method = RequestMethod.GET) 和 @GetMapping("/hello4") ,让 hello2 和 hello4 这两个方法,仅支持 Get请求。
7. Post请求
让某一个方法,只支持 Post请求
1. 第一种方式:@RequestMapping()
java
@RequestMapping(value = "hello3",method = RequestMethod.POST)
运用上述注解 @RequestMapping

hello3 这个方法,只支持 Post请求:
看运行结果:

2. 第二种方式:@PostMapping()
java
@PostMapping("/hello5")
使用 PostMapping这个注解:

总结:
@RequestMapping(value = "hello3",method = RequestMethod.POST) 和 @PostMapping("/hello5"),让 hello3 和 hello5 这个方法,只能支持 Post请求。
8. Get请求 和 Post请求的区别
浏览器从服务器端获取资源的时候,用 Get请求,例如:下载文件,资源
给服务器端发送资源的时候,用 Post请求,例如:登录网站
为什么会有 Get请求 和 Post请求的区分?
答:做一个项目中,前端给后端的各种请求,都有文档规定的规范
就目前来说:混着用就行,但是面试会考。
博客连接:网络原理(4):HTTP协议 -- HTTP请求 -- 首行(请求方法)
9. @RequestMapping 手动设置多个请求方式

图中这个 m6 方法,支持 GET,POST 请求方法。
10.总结:
主要学习了三个注解
@RequestMapping :映射路径的,可以支持多种请求(默认情况)
@GetMapping:映射路径的,仅仅可以支持 Get请求
@PostMapping:映射路径的,仅仅可以支持 Post请求
这三个注解,都是用来建立连接的,通过建立连接,访问服务器
注:资源路径 和 请求方式 是唯一的。
@RequestMapping :不能有两个相同的方法路径,因为包含了所有的请求方式,一旦确定资源路径,资源路径 和 请求方式 就立刻唯一确定了。
@PostMapping 和 @GetMapping:可以有两个相同的方法路径,因为是两个不同的请求方式
最后,如果这篇博客能帮到你的,请你点点赞,有写错了,写的不好的,欢迎评论指出,谢谢!
下一篇博客:SpringMVC(2)传入请求参数