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){ }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。