简单参数
原始方式获取请求参数
定义
在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获取。
- Controller方法形参中声明HttpServletRequest对象
- 调用对象的getParameter(参数名)
(注:不过原始的web程序需要进行手动类型转换,较为繁琐)代码
@RequestMapping("/simpleParam"){ String name = request.getParameter("name"); String ageStr = request.getParameter("age"); int age = Integer.parseInt(ageStr); System.out.println(name+" : "+age); return "OK"; }
SpringBoot中接收简单参数
定义
请求参数名与形参变量名相同时,定义形参即可接收参数。
(注:会自动进行类型转换)
代码
@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name") String username , Integer age){
System.out.println(username + " : " + age);
return "OK";
}
SpringBoot中@RequestParam注解
定义
如果方法形参名称与请求参数名称不匹配,可以使用 @RequestParam注解 完成映射。
(注:@RequestParam中的required属性默认为true,代表该前台请求参数必须传递,如果不传递将报错。 如果该参数是没传递,可以将required属性设置为false。)
代码
@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name") String username , Integer age){
System.out.println(username + " : " + age);
return "OK";
}
实体参数
解决
若前端传递十几个参数,则用简单参数比较繁琐,不便于后期的维护。
将所有的请求参数封装到一个实体类中
定义
请求参数名与形参对象属性名相同,定义POJO接收即可。
其余则按照对象层次结构关系即可接收嵌套POJO属性参数。
代码
(右键->生成 或者快捷键ALT+INSERT生成get/set方法和toString方法)
(注:请求参数名与形参对应的属性名保持一致)
实体类对象
public class User {
private String name;
private Integer age;
private Address address;
}
public class Address {
private String province;
private String city;
}
形参方法
//指定请求路径
@RequestMapping("/Pojo")
public String simplePojo(User user){
System.out.println(user);
return "OK";
}
数组集合参数
定义
数组:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数
集合:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam注解 绑定参数关系
代码
//数组参数
@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
System.out.println(Arrays.toString(hobby));
return "OK";
}
//集合参数
@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){
System.out.println(hobby);
return "OK";
}
日期参数
定义
使用 @DateTimeFormat 注解完成日期参数格式转换
日期格式:
updateTime=2022年12月12日 10时05分45秒
updateTime=2022/12/12 10:05:45
代码
@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
System.out.println(updateTime);
return "OK";
}
Json参数
定义
JSON数据键名(key)与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody注解 标识
(注:要想发送请求,传递json格式的请求数据,要将请求方式设置为post方式。因为json格式的请求数据要放在请求中携带到服务端的。json格式的数据key值要加双引号)
代码
实体对象如上所述
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user);
return "OK";
}
路径参数
定义
通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用@PathVariable 注解获取路径参数,路径参数的参数值id与方法形参名称id保持一致
代码
//单个请求参数
@RequestMapping("/path/{id}")
public String pathParam(@PathVariable Integer id){
System.out.println(id);
return "OK";
}
//多个请求参数
@RequestMapping("/path/{id}/{name}")
public String pathParam2(@PathVariable Integer id, @PathVariable String name){ System.out.println(id+ " : " +name);
return "OK";
}