运行环境
jdk 1.8
spring boot 2.6.1
maven 3.9.1
编译器 idea
参照1天搞定SpringBoot+Vue全栈开发的学习笔记
Maven
核心配置文件 pom.xml
server.port=80
:配置默认端口为80
控制器
@Controller
:返回页面+数据
@RestController
:返回数据,默认会将返回的对象数据转换为JSON格式,便于前端处理
控制器前面不要忘记加这个,不然就报错了😭
路由映射
@RequestMapping注解负责URL的路由映射
@RequestMapping (value = “/hello”,method = RequestMethod.GET) <=>
@GetMapping(“/hello”)
常用参数
value:请求URL路径,支持URL模板,支持正则表达
(“/user”) (“/getJson/*.json”)
- "*"代表任意字符
- "**"匹配任意路径 优先级弱于
- "?"匹配单个字符
method:HTTP请求方式
consumes:请求媒体类型(Content-Type)
GET请求
GET请求可以通过地址栏传递参数
@RequestParam
:解决变量名称不匹配的问题
如传递变量名是nickname,但后台的命名时name,可以通过这个注解把nickname映射为name。但这个操作后,如果地址栏没有传递参数,也会报错,这就需要添加required的参数,required = false
,地址栏设置为非必须传递参数
//http://localhost:8080/getTest2?nickname=xxx
@RequestMapping(value = "/getTest3",method = RequestMethod.GET)
public String getTest3(@RequestParam(value = "nickname",required = false) String name){
System.out.println("nickname:"+name);
return "GET请求";
}
POST请求
POST请求无法直接通过地址栏传递数据,此时可以通过postman模拟前端页面传递数据,进行后台调试。
前端传递的数据常见的有两种情况
x-www-form格式
JSON格式
JSON格式的请求模式与之前不同
如果传递JSON格式,必须要写@RequestBody
@RequestMapping(value = "/postTestJSON",method = RequestMethod.POST)
public String postTestJSON(@RequestBody User user){
System.out.println(user);
return "POST请求2";
}
封装
通过定义实体类User,可以方便地传递一组数据
public class User {
private String username;
private String password;
public String getUsername(){return username;}
public String getPassword(){return password;}
public void setPassword(String password){this.password = password;}
public void setUsername(String username){this.username = username;}
@Override
public String toString(){
return "User{username="+getUsername()+",password="+getPassword()+"}";
}
}
然后通过控制器进行控制
@RequestMapping(value = "/postTest",method = RequestMethod.POST)
public String postTest(User user){
System.out.println(user);
return "POST请求";
}