原始方式(使用httpservletrequest)
//原始方式获取请求参数
@RequestMapping("/getP")
public String getParam(HttpServletRequest request){
String name = request.getParameter("name");
String age = request.getParameter("age");
int Lage=Integer.parseInt(age);
System.out.println("name:"+name+"age:"+age);
return "ok";
}
原始方式比较麻烦,还需要进行类型转化,不推荐使用
Springboot方式
//基于Springboot方式接收
@RequestMapping("/SGetParam")
public String SGetParam(String name,Integer age){
System.out.println("name:"+name+"age:"+age);
return "ok";
}
这种方式需要前端传的请求参数名字和参数列表中接收参数的名字一致
使用@requestParam解决参数名字不一致问题,进行映射
//解决参数名不一样的方法
@RequestMapping("/SGetParam")
public String SGetParam2(@RequestParam(name = "name" ,required = false)String username,Integer age){
System.out.println("name:"+username+"age:"+age);
return "ok";
}
required = false代表这个参数是不必需要传的,如果改为true或者默认的话,必须传递这个参数
简单实体参数
只需要保证传递的参数名和实体中定义的成员变量名一致
//接收实体参数
@RequestMapping("/SimplePojo")
public String SimplePojo(User user){
System.out.println(user);
return "ok";
}
public class User {
String name;
Integer age;
}
复杂实体参数
传递的参数形式应该是....&address.province=河南&address.city=洛阳
public class Address {
private String province;
private String city;
}
public class User {
private String name;
private Integer age;
private Address address;
}
//接收实体参数
@RequestMapping("/SimplePojo")
public String SimplePojo(User user){
System.out.println(user);
return "ok";
}
数组集合参数
如果前端传递过来的是一个多选项,也就是一个数组的话,前端的传递形式是..hobby=java&hobby=html&hobby=js,有两种接收方式,第一种是数组接收,第二种是集合接收
数组接收
直接在参数列表中定义一个数组,数组名和前端参数名一致
@RequestMapping("/ArrayParam")
public String ArrayParam(String[] hobby){
System.out.println(Arrays.toString(hobby));
return "ok";
}
列表接收
因为默认是用数组接收,所以如果想使用列表接收的话需要前面加个注解
@RequestParam
@RequestMapping("/ListParam")
public String ListParam(@RequestParam List<String> hobby){
System.out.println(hobby);
return "ok";
}
日期参数
因为前端传递过来的日期格式可能不一样,所以需要指定日期的格式,例如使用
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss"),使用LocalDateTime这个类接收日期
//日期参数
@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime updateTime){
System.out.println(updateTime);
return "ok";
}
JSON参数
Json数据的键名与形参对象属性名相同,定义POJO类型参数即可接收参数,需要使用@requestbody标识,而且发送json只能使用post方法,封装在请求体中
@PostMapping("/jsonParam")java
public String jsonParam(@RequestBody User user){
System.out.println(user);
return "ok";
}
路径参数
通过请求url直接传递参数,在mapping中的路径中使用{..}来标识该路径参数,需要使用@pathvaribale获取路径参数,如果多个参数,在路径中再加/即可
@RequestMapping("/path/{id}/{name}")
public String path(@PathVariable Integer id,@PathVariable String name){
System.out.println(id);
System.out.println(name);
return "ok";
}