栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

浅谈@RequestParam、@RequestBody、@PathVariable

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅谈@RequestParam、@RequestBody、@PathVariable

        首先先说明一下,三者都是作用于Controller层用来接收前端传递过来的数据。下面就来简单说一下三者之间的区别、使用方式以及常见的应用场景。

@RequestParam
  • @RequestParam注解一般与get请求一起使用。
  • 一个请求(一个方法中)可以有多个@RequestParam。
  • @RequestParam 用来接收普通参数。

那么问题来了,加@RequestParam和不加有什么区别呢?我们又该在什么时候用它呢?
(1)加@RequestParam注解

@RequestMapping("/user")
public String user(int userId) {
  return "user";
}

(2)不加@RequestParam注解

@RequestMapping("/user")
public String user(@RequestParam("userId") int userId) {
  return "user";
}
  • 不添加该注解则参数为非必传,反之参数为必传。参数名为userId。
  • 通过注解中的参数required = false可以设置参数为非必传。required值默认为true。
  • 通过@RequestParam("userId")或者@RequestParam(value = "userId")指定参数名。
  • 通过参数defaultValue = "0"可以指定参数默认值。注意:当为require设置为false时才可以使用defaultValue。
@RequestMapping("/user")
public String user(@RequestParam(value = "userId", defaultValue = "0", required = false) int userId) {
  return "user";
}
@RequestBody(常用)
  • @RequestBody注解一般与post方法使用。
  • 一个请求中只能存在一个@RequestBody注解。
  • @RequestBody 用于接收前端传递给后端的json字符串中的数据。(处理json格式的数据)

语法格式:

(@RequestBody Map map)
(@RequestBody Object object)

(1)(@RequestBody Map map)方式:

        这种方式相对来说比较简单,我们将json解析成Map形式的key-value键值对,通过map.get(“Key”)就可以拿到值。

(2)(@RequestBody Object object)方式:

        通过json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合实体类的对应属性的类型要求时,会调用实体类的setter方法将值注入到该属性。

代码样例:

public Result deleteBookById(@RequestBody HashMap map) {
        bookService.deleteBookById(Long.parseLong(map.get("id")));
        return Result.createWithSuccessMessage();
    }

public Result updateBookById(@RequestBody Book book){
        Book record = bookService.updateBookById(book);
        return Result.createWithModel(record);
    }
@PathVariable(restful常用)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号