SpringBoot入门
请求响应概述
BS架构:客户端只需要浏览器,逻辑和数据都在服务端
CS架构:需要单独安装对应的客户端
请求参数
简单请求参数
原始方式
通过HTTPServeletRequest对象手动获取
@RestController
public class RequestController {
@RequestMapping("/sampleParam")
public String simpleParam(HttpServletRequest request){
String name = request.getParameter("name");
String age = request.getParameter("age");
System.out.println(name + age);
return "OK";
}
}
SpringBoot简化
只需要保证形参名和前端参数名一致即可
@RestController
public class RequestController {
@RequestMapping("/sampleParam")
public String simpleParam(String name, String age) {
System.out.println(name + age);
return "OK";
}
}
@RequestParam注解实现前端参数和形式参数的映射
@RestController
public class RequestController {
@RequestMapping("/sampleParam")
public String simpleParam(@RequestParam (name = "name")String username, String userage) {
System.out.println(name + age);
return "OK";
}
}
通过POJO对象接收参数
只需要保证前端参数名与POJO对象属性名一致即可自动实现参数的接收和转换
例如:定义User类,且需要实现get方法和set方法
package com.vanffer.POJO;
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
}
在接收参数时只需要传入User对象就可以实现参数的接收和转换
@RestController
public class RequestController {
@RequestMapping("/sampleParam")
public String simpleParam(User user) {
System.out.println(user.getName() + ": " + user.getAge());
return "OK";
}
}
复杂实体对象接收参数
后端代码与简单POJO对象一致,只需要前端分别传参即可。
例如:http://localhost:8080/sampleParam?name=TOM&age=10&address.province=江西&address.city=赣州
数组参数
只需要在控制器方法中传入数组对象即可,数组名需要与前端参数名相同
例如:对于http://localhost:8080/arrayParam?hobby=drawing&hobby=game&hobby=reading ,只需要通过如下方法即可实现参数的接收
@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby) {
return Arrays.toString(hobby);
}
集合参数
传入List对象,List对象名要求与参数名保持一致,并使用@RequestParam绑定参数关系
例如:对于http://localhost:8080/listParam?hobby=drawing&hobby=game&hobby=reading ,只需要通过如下方法即可实现参数的接收
@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby) {
return hobby.toString();
}
时间类型参数
采用@DateTimeFormat注解指定时间格式,然后传入与前端参数同名的LocalDateTime类型形参。
例如,对于http://localhost:8080/dateParam?updateTime=2023-08-01 12:00:00
@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime updateTime){
System.out.println(updateTime);
return updateTime.toString();
}
JSON参数
前端通过POST请求在请求体中传递参数。
JSON数据的键名与后端形参对象的属性名保持一致,使用@RequestBody标识实现JSON参数与POJO形参的对应
例如传入JSON参数为
{
"name":"TOM",
"age":10,
"address":{
"province":"江西",
"city":"赣州"
}
}
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user);
return user.toString();
}
路径参数
参数同时作为url中路径的一部分,在@RequestMapping指定可变参数,然后在形参前使用@PathVariable注解
@RequestMapping("/pathParam/{id}")
public String pathParam(@PathVariable Integer id){
System.out.println(id);
return id.toString();
}
响应
@ResponseBody
类型:方法注解、类注解
位置:Controller方法上/类上
作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,会转成JSON格式响应
@RestController = @Controller + @ResponseBody