springboot获取参数的⼏种⽅式
1 通过json获取参数
通过浏览器的url为后端控制层函数赋值,通过注解@responseBody 将java对象转换为json格式的数据返回给前端页⾯。
@ResponseBody注解的作⽤是将controller的⽅法返回的对象通过适当的转换器转换为指定的格式之后,写⼊到response对象的body区,通常⽤来返回JSON数据或者是XML数据。⼀般在异步获取数据时使⽤【也就是AJAX】。
后端Controller层代码如下:
@RequestMapping("/param")
@ResponseBody
public Map<String,Object> demo1(String name,int age){
Map<String,Object> paramMap=new HashMap<String,Object>();
paramMap.put("name",name);
paramMap.put("age",age);
return paramMap;
}
前端浏览器请求为:
localhost:8080/param?name=zhangsan&age=14
之后前端返回的Json数据为:
{“name”:zhangsan,“age”:14}
2 请求路径参数@PathVariable
获取路径参数。即前端浏览器发起url/{id}请求的这种形式。
后端Controller层代码如下:
@RequestMapping("/param/{name}/{age}")
@ResponseBody
public Map<String,Object> demo2(@PathVariable("name") String name , @pathVariable("age") int age){
Map<String,Object> paramMap=new HashMap<String,Object>();
paramMap.put("name",name);
paramMap.put("age",age);
return paramMap;
}
其中@PathVariable(value = “name”, required = false)中有value和required两个参数,第⼀个即为指定传递的参数,第⼆个为该参数是否必须,若为false则可以在前端不传⼊该参数,默认为null空值。
3 @RequestParam的使⽤
使⽤@RequestParm⽤于绑定controller上的参数,可以是多个参数,也可以是⼀个Map集合,GET,POST均可;
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表⽰该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,⾃动为false,如果没有传该参数,就使⽤默认值
@RequestMapping("/param/{name}/{age}")
@ResponseBody
public Map<String,Object> demo2(@RequestParam("name") String name , @RequestParam("age") int age){
param nameMap<String,Object> paramMap=new HashMap<String,Object>();
paramMap.put("name",name);
paramMap.put("age",age);
return paramMap;
}
@RequestParam 和@PathVariable 之间的区别:
@RequestParam ⽤来获得静态URL中传⼊的参数,@PathVariable ⽤来获得动态URL中的参数
4 @RequestBody
@RequestBody绑定的是⼀个对象实体,将 HTTP 请求正⽂插⼊⽅法中,使⽤适合的 HttpMessageConverter 将请求体写⼊某个对象。1) 该注解⽤于读取Request请求的body部分数据,使⽤系统默认配置的HttpMessageConverter进⾏解析,然后把相应的数据绑定
到要返回的对象上;
2) 再把HttpMessageConverter返回的对象数据绑定到 controller中⽅法的参数上。
使⽤⽅法:
@Controller
@RequestMapping(value = "user/login")
@ResponseBody
// 将ajax(datas)发出的请求写⼊ User 对象中
public User login(@RequestBody User user) {
// 这样就不会再被解析为跳转路径,⽽是直接将user对象写⼊ HTTP 响应正⽂中
return user;
}
或者:
@PostMapping(value = "requestBody")
@ResponseBody
public User requestBody(@RequestBody  User user){
System.out.println("user:"+Name());
return user;
}
request的body部分的数据编码格式由header部分的Content-Type指定;@RequestBody不⽀持Get请求?(存疑)因为get请求没有HttpEntity。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。