java注解绑定方法参数,SpringMVC 五种注解参数绑定

这里将告诉您SpringMVC 五种注解参数绑定,具体操作过程:SpringMVC 五种注解参数绑定

SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了

下面通过5个常用的注解演示下如何进行参数绑定:

1. @PathVariable注解

@PathVariable 是用来获得请求url中的动态参数的,可以将URL中的变量映射到功能处理方法的参数上,其中URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。

示例代码:

@ResponseBody

@RequestMapping("/testUrlPathParam/{param1}/{param2}")

publicvoidtestUrlPathParam(HttpServletRequestrequest,@PathVariableStringparam1,

@PathVariableStringparam2){

System.out.println("通过PathVariable获取的参数param1="+param1);

System.out.println("通过PathVariable获取的参数param2="+param2);

}

Postman发送请求截图:

4a78879994fd99ca94131b963322dc34.png

输出结果:

通过PathVariable获取的参数param1=1

通过PathVariable获取的参数param2=2

2.@RequestHeader注解

@RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上。

示例代码:

@ResponseBody

@RequestMapping("/testHeaderParam")

publicvoidtestHeaderParam(HttpServletRequestrequest,@RequestHeaderStringparam1){

System.out.println("通过RequestHeader获取的参数param1="+param1);

}

Postman发送请求截图:

9d9ae9912242bf575e03ca74667d7a7e.png

输出结果:

通过RequestHeader获取的参数param1=abc

3.@CookieValue注解

@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上。

示例代码:

@ResponseBody

@RequestMapping("/testCookieParam")

publicvoidtestCookieParam(HttpServletRequestrequest,HttpServletResponseresponse,

@CookieValueStringsessionid){

System.out.println("通过CookieValue获取的参数sessionid="+sessionid);

}

Postman发送请求截图:

6cea0c41f9317229a5f982f9b9ca2fe5.png

输出结果:

通过CookieValue获取的参数sessionid=ebef978eef6c46f8a95cc0990d2d360a

4.@RequestParam注解

@RequestParam注解用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。提交方式为get或post。(Http协议中,form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded);

@RequestParam注解实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段,

get方式中queryString的值,和post方式中body data的值都会被Servlet接受到并转化到Request.getParameter()参数集中,所以@RequestParam可以获取的到;

该注解有三个属性: value、required、defaultValue; value用来指定要传入值的id名称,required用来指示参数是否必录,defaultValue表示参数不传时候的默认值。

示例代码:

@ResponseBody

@RequestMapping("/testRequestParam")

publicvoidtestRequestParam(HttpServletRequestrequest,

@RequestParam(value="num",required=true,defaultValue="0")intnum){

System.out.println("通过RequestParam获取的参数num="+num);

}

Postman发送请求截图:

3e9cc04cd49ed384e96c4fc42bdad5d9.png

输出结果:

通过RequestParam获取的参数num=10

5.@RequestBody注解

@RequestBody注解用来处理HttpEntity(请求体)传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据;

GET请求中,因为没有HttpEntity,所以@RequestBody并不适用;

POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用HandlerAdapter配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。

示例代码:

@ResponseBody

@RequestMapping("/testRequestBody")

publicvoidtestRequestBody(HttpServletRequestrequest,@RequestBodyStringbodyStr){

System.out.println("通过RequestBody获取的参数bodyStr="+bodyStr);}

Postman发送请求截图:

1fbff81636c6258be340541174ff3827.png

代码运行结果:

通过RequestBody获取的参数bodyStr=这是body的内容

SpringMVC 五种注解参数绑定就为您介绍到这里,感谢您关注懒咪学编程c.lanmit.com.

本文地址:https://c.lanmit.com/bianchengkaifa/Java/118781.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值