👉原文阅读
💡章前导言
本文为B站1天搞定SpringBoot+Vue全栈开发系列视频学习笔记,带时间戳的B站笔记(不含代码)已经施工完成,点击视频右下角的“笔记”按钮即可查看(不带B站时间戳的笔记专栏链接在这)。
有能力的朋友请多多支持up拿完整的课件代码!本笔记代码部分不全,纯手打(我手打是因为个人而言手打记忆才深刻)。
如果想要资料,老师的微信公众号有免费的课件和文档,关注“软件练习生”公众号回复“Java”获取课件资料(注意:关注回复关键字就可以,不会让你加群/微信的!)。
我自己整理的课件、代码等资料(不保证全),放在Github上了,需要的自取。
👉1天搞定SpringBoot+Vue全栈开发·个人整理资料
目录
📘正文开始
对应视频内容👉SpringBoot Controller
Web入门
- Spring Web提供了启动器starter,主要包含了三个组件:mvc、json、tomcat。
- webmvc组件主要提供web开发的注解(类似于控制器的注解)是web开发的基础框架
- json组件主要提供了JSON数据的解析,使能够接收前端发送数据并返回
- Tomcat为自带的容器依赖
控制器
控制器介绍
-
mvc为后端开发的一种模式:m为Model,用于存储收发数据;c为Controller,用于协调控制;v为View(视图),是用来显示数据的。
-
在mvc模式下,从数据库中加载的数据首先被封装在Model中,通过Controller,绑定到View上(视图可以理解为html的页面)。
-
所以控制器负责接收将数据交给浏览器与接收用户请求。用户操作时,实际上是→对控制器发出请求→控制器取用数据→交给视图→最终响应给用户。
两种注解
- @Controller(无法前后端分离):既有页面又有数据。
- @RestController:只有数据。RestController(为了方便前端处理)会将返回的对象数据转换为JSON格式。
路由映射
控制器如何接收前端的请求
-
@RequestMapping(可以用在类或者方法上)
-
value参数:用于配置路径,支持普通字符串与正则表达式。可以规定前端用什么方法请求(比如get或post)
实际操作
-
使用
@RequestMapping
-
加入value值:
/hello
。使hello方法能够接收前端的请求,前端通过/hello路径能够访问到该方法。(在地址栏里面发送的请求都是get请求)
-
规定方法:加入
method=RequestMethod.GET
,规定只能通过get请求。(@RequestMapping(value="/hello",method=RequestMethod.GET)
等价于@GetMapping("/hello")
)
参数传递
-
@RequestParam可以将前端的数据绑定到控制器的方法上以获取前端传递的信息。当传参与参数名一致时可省略。
此时只需要在方法里面加入一个参数:String nickname,就可自动将前端输入的昵称传入nickname中。
-
传参与定义参数名不一致,可以在方法里加入
@RequestParam(value = "nickname",required = false)String name
(代表参数映射,加上这个注解,就代表这个参数是必须的,如果希望可选就加上
required = false
)(如果必须,没输入会报错,报错结果为status=400,400一般意味着是客户端,也就是浏览器出了问题)
全部代码如下
创建entity实体包,在entity下创建User类(按住alt+insert快捷加入get/set/to String方法)
public class User {
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private String username;
private String password;
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
在Controller包下创建ParamsController控制器类(后面的POST方法用APIPOST可以调试)
@RestController
public class ParamsController {
@RequestMapping(value = "/getTest1",method = RequestMethod.GET)
public String getTest1(){
return "Get请求";
}
@RequestMapping(value ="/getTest2",method = RequestMethod.GET)
public String getTest2(String nickname,String phone){
System.out.println("nickname"+nickname);
System.out.println("phone"+phone);
return "GET请求";
}
@RequestMapping(value = "/getTest3",method = RequestMethod.GET)
public String getTest3(@RequestParam(value = "nickname",required = false)String name){
//↑注解,代表参数映射,表示如果传参名字与参数不一致,就映射nickname
System.out.println("nickname"+name);
return "GET请求";
}
@RequestMapping(value = "/postTest1",method = RequestMethod.POST)
public String postTest1(){
return "POST请求";
}
@RequestMapping(value = "/postTest2",method = RequestMethod.POST)
public String postTest2(String username,String password){
System.out.println("username:"+username);
System.out.println("password:"+password);
return "POST请求";
}
@RequestMapping(value = "/postTest3",method = RequestMethod.POST)
public String postTest3(User user){
System.out.println(user);
return "POST请求3";
}
@RequestMapping(value = "/postTest4",method = RequestMethod.POST)
public String postTest4(@RequestBody User user){
System.out.println(user);
return "post请求";
}
@GetMapping("/test/**")
public String test(){
return "通配符请求";
}
}
APIPOST
- 可以模拟post请求
(本来需要通过专门的前端程序或者表单,这里可以通过APIPOST进行前端调试)
(在地址栏里面发送的是get请求,不能直接/postTest(post请求的方法),会有405(4开头一般是浏览器的问题))
- JSON类型需要使用{}传递
- 如果需要接收JSON类型的数据需要加一个单独的注解 @RequestBody
- 需要注意类型与参数名都要对的上
- 通配符(了解即可)
/test/**
,意味着/test/a/b/c都行。/test/*
意味着只能/test/abcc。