博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java注解绑定方法参数,SpringMVC 五种注解参数绑定
阅读量:6642 次
发布时间:2019-06-25

本文共 2853 字,大约阅读时间需要 9 分钟。

这里将告诉您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

转载地址:http://ibevo.baihongyu.com/

你可能感兴趣的文章
新瓶如何和平改造老酒?(野生项目笔记01)
查看>>
Python实现MySQL DBA小工具一例
查看>>
YodaOS 中是如何生成 API 的?
查看>>
Android 中Fragment的自动重建
查看>>
在 iOS 平台实现Ping 和 traceroute
查看>>
小猿圈python学习-嵌套&匿名&高阶函数
查看>>
element-ui 版本升级对比
查看>>
js 整理
查看>>
OOM
查看>>
Java Socket基础(二)
查看>>
基于Squid3.0的反向代理加速实现
查看>>
我的友情链接
查看>>
Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色
查看>>
Jenkins Master/Slave架构
查看>>
[每日短篇] 9 - 去外包公司工作好还是不好?
查看>>
我的友情链接
查看>>
设计模式之创建型模式—— 1.4 单例模式
查看>>
Linux Shell 程序调试
查看>>
PHP操作XML(三)——RSS
查看>>
Oracle Dimension
查看>>