@RequestParam、@PathVariable、@RequestBody和@Param

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@RequestParam、@PathVariable、@RequestBody和@Param相关的知识,希望对你有一定的参考价值。

参考技术A 顾名思义:获取参数,即获取传送过来的参数。例如获取下面链接的id参数值:

//链接(注意链接格式区别)
http://localhost:8080/hello?id=6

此时@RequestParam的作用就可以获取id下来并且作为形参传给方法体里面的id。

@RequestParam用于Controller层,是Spring的注解。 解决前台参数名称与后台接收参数变量名称不一致的问题,等价于request.getParam。具体参数:
1️⃣value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的name为username的参数的值将传入;
2️⃣required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报 404 错误码;
3️⃣defaultValue:默认值,表示如果请求中没有同名参数时的默认值,默认值可以是SPEL表达式,如“#systemProperties['java.vm.version']”。

顾名思义:路径变量,即获取链接路径上的变量。例如获取下面链接的id:

//链接(注意比较上面一条链接)
http://localhost:8090/hello/6

此时@PathVariable的作用是将路径上的id获取进来传递给方法体里面的形参id,但是变量名称必须一样。比如这里: value = "/getBook/id" 和 @PathVariable Integer id ;两个都必须是一样的,即都为 id ,否则报错;

@RequestBody注解一般主要是用来处理 content-type:"application/json charset=utf-8" 或者 content-type:"application/xml charset=utf-8" 两种请求数据,一般是异步请求用的比较多些,例如:

此时@RequestBody注解就可以获取到请求中的各个参数,然后赋值到相对应的方法形参上。另外,当有一个实体类User包含了id和name的元素的话,在方法里面直接可以写 @RequestBody User user 就会自动封装好供使用了,不用麻烦像这样 @RequestBody Integer id,@RequestBody String name 一个一个的封装。

用于dao层,是MyBatis中的注解。使得mapper.xml中的参数与后台的参数对应上,也增强了可读性。

如果两者参数名一致得话,spring会自动进行封装,不一致的时候就需要手动去使其对应上。即:用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中 。

在dao层,用来给参数命名,在MyBatis的mapper中加上该注解,传递的参数与Sql中的字段名一致:

handler method 参数绑定常用的注解,根据处理的Request的不同内容部分分为四类:(主要讲解常用类型)

以上是关于@RequestParam、@PathVariable、@RequestBody和@Param的主要内容,如果未能解决你的问题,请参考以下文章

@RequestParam 与 @PathVariable

@RequestBody和@RequestParam区别

@RequestBody和@RequestParam区别

@RequestBody和@RequestParam区别

@RequestParam注解

@RequestParam注解