本篇会加入个人的所谓鱼式疯言
❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言
而是理解过并总结出来通俗易懂的大白话,
小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.
🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!!
引言
Spring MVC 犹如一座桥梁,连接着前端的精彩与后端的强大,它赋予开发者以灵动之笔,在数字化的画布上描绘出绚丽多彩的 Web 世界。在 Spring MVC 的引领下,我们能够驾驭复杂的业务逻辑,实现流畅的用户体验,让技术与创意完美融合,开启无限可能的 Web 开发之旅。
目录
-
Spring MVC
-
Controller 的参数传递
-
Cookie 与 Session 传递
一. Spring MVC
1. Spring MVC 初识
如上图
首先当用户发送一个
HTTP 请求
, 是直接给 Controller 控制器 发送请求
然后当 Controller 控制器 接收到之后, 就会把请求进一步传给
Model
, 让Model
来处理 数据并返回结果给 Controller 。
最后
Controller
接收到Model 响应
的数据之后, **不会直接返回给用户, 而是传给 View **, 让View响应对应的文字和图片等数据的页面展示给用户 。
如上图, 上面的这样模型就称之为 Spring MVC 模型
:
Model
: 负责具体的 数据管理和业务逻辑的处理的一端
Controller
: 负责接收来自 用户的数据 , 并传递给Model 端
进行处理 , 并 传递给View 端
View
: 负责把最终的结果数据 , 通过页面展示的方式 响应给用户。
鱼式疯言
补充讲解
找工作栗子:
上述的流程就好比我们应届生找工作的过程:
好比现在小编有一个内推名额, 有了内推名额的话
小编这边就可以直接进行面试,也就是直接可以找 Controller 端
进行面试,经过几波重重考验, 小编通过了面试。
这时
Controller
就会告诉他的领导Model
来同意是否任用小编, 同意之后 , 领导Model 就会通知给 Controller .
Controller
然后又告诉HR
, 也就是这里的View
, 让View
直接给小编发Offer
2. Spring MVC 的优点
Spring MVC
的优点:
低耦合性 : 使每个模块都 相互独立
, 方便扩展更多的业务逻辑
高效性 : 每个模块都 独立工作
, 调用起来更方便,并且还能相互 配合处理大量的数据
集成性 : 与 Spring 框架集成
,开发效率高, 容易上手, 可以动态的配置文件 , 充分利用 Spring 的各种资源和特性 。
二. Controller 的参数传递
Controller
的参数传递, 主要是 演示代码 , 通过代码的方式来小伙伴初步的了解 Spring 框架 的使用, 下面我们开始吧~
1. 无参数
@RestController
@RequestMapping("/begin")
public class helloController {
@RequestMapping("/hello")
public String hello() {
return "I Love You";
}
}
在讲解参数之前, 先带着小伙伴们回顾上一篇的内容:
@RestController
: Controller 入口的标志
@RequestMapping
: 路径的声明, 第一个为 父路径 :/begin
, 第二个为 子路径 :/hello
所以最终的URL 为:
http://127.0.0.1:8080/begin/hello
还不理解的小伙伴可以参考小编的前面一篇文章哦~
鱼式疯言
补充说明:
@RequestMapping
: 可以接收post 请求
, 也可以接收get 请求
@RequestMapping
可以设置
get请求
:
@RequestMapping(value = "/hello" ,method = RequestMethod.GET)
public String hello() {
return "I Love You";
}
post 请求
:
@RequestMapping(value = "/hello" ,method = RequestMethod.POST)
public String hello() {
return "I Love You";
}
- 或者可以换其他注解`:
@PostMapping
: 只能接收post请求
@GetMapping
: 只能接收get请求
2. 单参数传递
<1>. 普通演示
@RestController
@RequestMapping("/begin")
public class helloController {
/**
* 传递时需要同名
* @param name 名字
* @return 该正文
*/
// 传递一个请求参数
@RequestMapping("/param1")
public String param1(String name) {
return "name: " + name;
}
}
这里传递
单个参数
, 是在URL
的查询字符串进行拼接, 小编这里使用postman
进行发送get 请求
, 当Controller
接收到postman
发送的这条 URL 请求 时 , 就会 效应对应的数据 。
需要注意的是, 这里的 URL
的参数名 一定要 方法中的参数名 保持一致 。
鱼式疯言
补充说明 :
其实这里使用
postman
来 发送请求和使用浏览器发送请求的效果是一样的, 没有本质区别。
如果还不熟练使用 postman
的小伙伴,也可以这样发送请求哦~
<2>. 重命名演示
上面的单参数传递是不是要必须保证参数名是统一的, 如果不统一会怎么样呢?
如上图,如果参数不统一我们就无法传入对应参数。
那么我们就 无法换参数传递 吗?
答案: 不是
我们还可以这样使用
@RestController
@RequestMapping("/begin")
public class helloController {
// 传递一个请求参数
@RequestMapping("/param1")
public String param1(@RequestParam("name1") String name) {
return "name: " + name;
}
如上图:
我们可以使用
@RequestParam("name1")
绑定参数
这里只需要
@RequestParam
中的参数和URL
中的查询字符串中的参数相同 即可
而 方法中的参数我们只需要自己命名自己想要的都可以 。
但是有一点,
@RequestParam("name1")
是 必传参数 ,也就是说name1
如果没传就会出现客户端的错误
。
鱼式疯言
补充说明:
@RequestMapping("/param1")
public String param1(@RequestParam(value = "name1", required = false) String name) {
return "name: " + name;
}
如上面的代码, 如果我们不需要是必传参数, 就可以把 required = false
即可
3. 多参数传递
如果我们不止传一个参数呢? 假如我们需要传
name
,age
,gender
这三个参数
@RestController