springboot如何接收前台传送过来的数据呢?
下文笔者讲述springboot中接收参数的三种方式分享(@requestParam,@requestBody和@PathVariable),如下所示
在讲述SpringBoot中接收参数的三种方法,我们先讲述一下http请求的get和post区别
在讲述SpringBoot中接收参数的三种方法,我们先讲述一下http请求的get和post区别
Get与Post区别
?Get和POST请求的区别 在于浏览器发送数据的方法 Get: 将http的header和data一并发往服务端 即发送一次tcp数据包,此时会导致传送数据量有限 据量有限,依赖于Tcp负载能力,所以携带的数据量很大的情况下,容易造成重发。 Post: 先发送http的header 然后再传输data 数据类型也不受限制 且数据隐秘性比较好
后端获取数据
//1.获取路径上的数据
如:
localhost:/user/8
此时获取路径上8
//2.url路径上的参数
如:
localhost:/user?name=maomao
//3.存放在body中的普通数据
使用@requestParam
//4.存放在body中的json数据
使用application/json格式
可使用@requestBody获取
Get方式参数获取的示例
使用@RequestParam
@RequestMapping(value="/getUserInfo")
public User getUserInfo(@RequestParam(value= "id") String id ){
}
使用HttpServletRequest
@RequestMapping(value = "/getUserInfo")
public User getUserInfo(HttpServletRequest request){
Integer id = Integer.parseInt(request.getParameter("id"));
if (id.intValue() == 0) {
return null;
}
}
Post方式参数获取
post可传递参数可以大致分成两种
第一种是表单
在sevlet实现中mutipart/form-data
和application/x-www-form-urlencoded会被特殊处理
请求参数将被放置于request.paramter
解析成map
第二种 application/json
参数是存放在json中
参数必须要用@RequestBody才能解析出来
//使用@RequestBody,此方式必须使用Content-Type=application/json
//获取数据的原理 json转map,然后 (Integer) map.get(“id”)
@RequestMapping(value = "/getUserInfo")
public User getUserInfo(@RequestBody Integer id){
}
//使用@RequestParam
//在Content-Type=mutipart/form-data和Content-Type=application/x-www-form-urlencoded这种情况下才能使用
//servlet将Body中的key-value转成Param
@RequestMapping(value = "/getUserInfo")
public User getUserInfo(@RequestParam(value = "id",required = false) Integer id){
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


