Spring @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
背景
昨天一个人瞎倒腾spring boot,然后遇到了一点问题,所以把这个问题总结一下。
主要讲解request 数据到handler method 参数数据的绑定,所用到的注解和什么情形下使用。
正文
| 注解名 | 应用场景描述 | 调用示例 | 示例代码 |
|---|---|---|---|
| @PathVariable | 当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上 |
GET[host]/users/{id} |
@GetMapping(value = "/{id}") public User getUserById(@PathVariable Long id) { return users.get(id); } |
| @RequestHeader | @RequestHeader 注解, 可以把Request请求header部分的值绑定到方法的参数上 |
http request headHost localhost:8080 Accept application/json Accept-Encoding gzip,deflate Keep-Alive 300 |
@GetMapping public String getChartset(@RequestHeader("Accept-Encoding") String encoding) { //… } |
| @CookieValue | @CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上 | cookie值 JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84 |
@GetMapping("/displayHeaderInfo") public void displayHeaderInfo(@CookieValue("JSESSIONID") String cookie) { //… } |
| @RequestParam | A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况; (String–> 简单类型的转换操作由ConversionService配置的转换器来完成) 因为使用request.getParameter()方式获取参数,所以可以处理 GET 方式中queryString的值,也可以处理POST方式中 body data的值;B) 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式 GET、POST;C) 该注解有两个属性: value、required; value:用来指定要传入值的id名称; required:用来指示参数是否必须绑定; |
GET [host]/users?id={id} |
@GetMapping(value = "/{id}") public User getUserById(@RequestParam Long id) { return users.get(id); } |
| @RequestBody | 该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等; 它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。 |
PUT[host]:8080/users/3 RequestBody{ "name": "小鸭", "age": 23 } |
@PutMapping(value = "/{id}") public String updateUser(@PathVariable Long id, @RequestBody User user) { //… } |
| @ModelAttribute | 该注解有两个用法,一个是用于方法上,一个是用于参数上; 用于方法上时: 通常用来在处理@RequestMapping之前,为请求绑定需要从后台查询的model; 用于参数上时: 用来通过名称对应,把相应名称的值绑定到注解的参数bean上;要绑定的值来源于: A) @SessionAttributes 启用的attribute 对象上; B) @ModelAttribute 用于方法上时指定的model对象; C) 上述两种情况都没有时,new一个需要绑定的bean对象,然后把request中按名称对应的方式把值绑定到bean中。 |
POST[host]/users/1/aaa/11 |
@PostMapping(value = "/{id}/{name}/{age}") public String addUser(@ModelAttribute User user) { //… } |
Spring @RequestParam @RequestBody @PathVariable 等参数绑定注解详解的更多相关文章
- 【转】@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
@RequestParam @RequestBody @PathVariable 等参数绑定注解详解 2014-06-02 11:24 23683人阅读 评论(2) 收藏 举报 目录(?)[+] 引言 ...
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
文章主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用. 简介: handler method 参数绑定常用的注解,我们根据他们处理的Request ...
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解(转)
引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: han ...
- 转载:@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
转载自:https://blog.csdn.net/walkerjong/article/details/7946109#commentBox 因为写的很好很全,所以转载过来 引言:接上一篇文章, ...
- 11.@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: handler method ...
- (转)@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: han ...
- springmvc @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
简介: handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A.处理requet uri 部分(这里指uri templat ...
- SpringMVC @RequestBody @RequestParam @PathVariable 等参数绑定注解详解
request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: http://blog.csdn.net/walkerjong/article/details/794 ...
- @PathVariable @RequestParam @RequestBody等参数绑定注解详解
一.分类 handler method 参数绑定常用的注解,我们根据他们处理的Request的内容不同分为四类: 处理request uri 部分的注解: @PathVariable;(这里指ur ...
随机推荐
- YCSB测试Mysql,MongoDB,TokuMX,Couchbase性能
测试是由同事完成的,这里只做收藏. 测试说明: 1.数据量为3kw记录,每条记录11个字段,一个为主键,主键为字符类型,类似:user****,后续为数值 其他10字段为字符类型,100字符,记录长度 ...
- Asp.net 未处理异常
页面级捕获未处理异常 - Page 的 Error 事件 Protected Sub Page_Error(ByVal sender As Object, ByVal e As System.Even ...
- Git分支的前世今生
摘自Jack__CJ CSDN博客,写得很好,保存一下. 导读 几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系 ...
- windows下多字节和宽字节转换
先简单说下什么是多字节和宽字节. 多字节是指使用多个字节(1-3)表示一个字符.比如gbk使用英文占一个字节,中文占2个,这个就是多字节了.utf-8是使用1-3个字节表示字符.还有big5等等. 宽 ...
- WCF 编程实验室
最近由于项目需要,简单研究了一下.NET WCF编程. 首先,简单说下WCF是什么,WCF 本质上,是一种开发框架.它用来开发类似COM+ .WEB SERVICE 这样“远程方法调用” 功能. 普通 ...
- prolog --寻找neni (2)
混合查询 我们可以把简单的查询连接起来,组成复杂的查询. ?- location(X,kitchen),edible(X). 简单查询只有一个目标,而混合查询可以把这些目标连接起来.从而进行较为复杂的 ...
- SRM 146 DIV1 600
Problem Statement Masterbrain is a two player board game in which one player decides on a secre ...
- Linux 驱动学习笔记05--字符驱动实例,实现一个共享内存设备的驱动
断断续续学驱动,好不容易有空,做了段字符驱动的例子.主要还是跟书上学习在此记录下来,以后说不定能回过头来温故知新. 首先上驱动源码 gmem.c: /************************* ...
- NPOI Helper文档
public class ExcelHelper { /// <summary> /// NPOI Excel转DataTable /// </summary> /// < ...
- shared memory realm does not exist
有天启动ORACLE,碰到如下问题 提示ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 解决 ...