【java】后端接受前端数据的常用注解

一、通过HttpServletRequest接收

像jwt中的token可以采用这种方式获取
【java】后端接受前端数据的常用注解

二、@RequestParam注解

经常用到的注解, 将指定的请求参数赋值给方法中的形参,支持get/post请求,属性:
(1)value :绑定请求的参数名,默认绑定为同名的形参;
(2)required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报错;
(3)defaultValue:默认值,表示如果请求中没有接收到值时的默认值。
【java】后端接受前端数据的常用注解

三、@PathVariable注解

接收请求路径中占位符的值,支持get/post请求,属性:
(1)value:String类型,绑定请求的参数名,用大括号的参数默认绑定为同名的形参。
【java】后端接受前端数据的常用注解

四、@RequestBody注解

接收前端传递的Json对象的字符串,只能是 Post请求。
【java】后端接受前端数据的常用注解

@RequestParam和@RequestBody区别

  • (1)Content-Type(请求媒体类型)
  • @RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded
    编码的内容,Content-Type默认为该属性。
  • application/json时候,json字符串部分不可用,url中的?后面添加参数即可用,form-data、x-www-form-urlencoded时候可用,但是要将Headers里的Content-Type删掉
  • 注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type:application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。
  • application/json时候可用
    form-data、x-www-form-urlencoded时候不可用
  • (2)get/post/delete/put请求类型
  • @RequestParam都可以
  • GET请求中,因为没有HttpEntity,所以GET请求中不可以使用@RequestBody
  • POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用 HandlerAdapter配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。
  • (3)使用规范
  • 可以使用多个@RequestParam获取数据,但@RequestBody不可以

前端传数组或list 后端接受方法

注解list前加上注解@RequestBody,ajax中的contentType 设置成’application/json’。