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

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

1. @PathVariable注解

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

示例代码:

  @ResponseBody    @RequestMapping("/testUrlPathParam/{param1}/{param2}")public void testUrlPathParam(HttpServletRequest request, @PathVariable String param1,                                 @PathVariable String param2) {        System.out.println("通过PathVariable获取的参数param1=" + param1);        System.out.println("通过PathVariable获取的参数param2=" + param2);    }

输出结果:

通过PathVariable获取的参数param1=1

通过PathVariable获取的参数param2=2

2.@RequestHeader注解

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

示例代码:

    @ResponseBody    @RequestMapping("/testHeaderParam")public void testHeaderParam(HttpServletRequest request, @RequestHeader String param1) {        System.out.println("通过RequestHeader获取的参数param1=" + param1);    }

输出结果:

通过RequestHeader获取的参数param1=abc

3.@CookieValue注解

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

示例代码:

  @ResponseBody    @RequestMapping("/testCookieParam")public void testCookieParam(HttpServletRequest request, HttpServletResponse response,                                  @CookieValue String sessionid) {        System.out.println("通过CookieValue获取的参数sessionid=" + sessionid);    }

输出结果:

通过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")public void testRequestParam(HttpServletRequest request,                                   @RequestParam(value = "num", required = true, defaultValue = "0") int num) {        System.out.println("通过RequestParam获取的参数num=" + num);    }

输出结果:

通过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")public void testRequestBody(HttpServletRequest request, @RequestBody String bodyStr){        System.out.println("通过RequestBody获取的参数bodyStr=" + bodyStr);    }

代码运行结果:

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

@pathvariable参数_SpringMVC 五种注解参数绑定相关推荐

  1. springmvc代码详细(五种映射,绑定参数,处理json数据,文件上传,转发,拦截器的实现)

    项目结构图: 父工程的pom.xml文件: <!-- 集中定义依赖版本号 --><properties><junit.version>4.10</junit. ...

  2. 如何发送和接收参数?五种参数传递方法

    通常情况下,我们可以使用GET或POST来发送请求和数据,但GET和POST两种方法所携带的数据都是比较简单的数据,接下来在我们这个基础上,列举5种比较负责的参数传递方法,并对这些参数如何发送,后台改 ...

  3. 【机器学习】五种超参数优化技巧

    转载:我不爱机器学习 超参数是用于控制学习过程的不同参数值,对机器学习模型的性能有显著影响. 超参数优化是找到超参数值的正确组合,以在合理的时间内实现数据的最大性能的过程 1 数据处理 import ...

  4. Python函数参数的五种类型

    之前项目需求,需要通过反射获取函数的参数,python中可以通过函数签名(signature)来实现. 首先需要了解函数参数的类型,Python的参数类型一共有5种:POSITIONAL_OR_KEY ...

  5. 方法中的参数的五种形式

    方法的基本的语法格式为: [作用域] 返回类型 方法名(参数1类型 参数1,参数2类型 参数2--) { //方法体 } 形参和实参这两个概念针对的是值类型的参数,对于引用参数则不存在这个问题. 首先 ...

  6. c#url拼接方法名_c# 获取url参数的五种方法

    假设当前页完整地址为:http://www.jbxue.com/aaa/bbb.aspx?id=5&name=kelli 则: "http://"是协议名 "ww ...

  7. java控制器接收请求参数_SpringMVC之接收请求参数和页面传参

    Spring接收请求参数 1,使用HttpServletRequest获取 Java代码 @RequestMapping("/login.do") public String lo ...

  8. AspectJ 切面注解中五种通知注解:@Before、@After、@AfterRunning、@AfterThrowing、@Around

    要在 Spring 中声明 AspectJ 切面, 只需要在 IOC 容器中将切面声明为 Bean 实例. 当在 Spring IOC 容器中初始化 AspectJ 切面之后, Spring IOC ...

  9. java会员卡的绑定和解绑_SpringMVC源码之参数解析绑定原理

    摘要 本文从源码层面简单讲解SpringMVC的参数绑定原理 SpringMVC参数绑定相关组件的初始化过程 在理解初始化之前,先来认识一个接口 HandlerMethodArgumentResolv ...

  10. requestbody接收不到参数_使用Spring MVC解析嵌套参数在三种 ContentType 下的绑定方式...

    1.关于三种 Content-Type multipart/form-data 请求中既可以携带文件,又可以携带参数.其中参数以键值对的方式传递,参数之间.参数与文件之间以 content-dispo ...

最新文章

  1. ASP.net 中的页面继承实现和通用页面的工厂模式的实现
  2. 步步为营-44-窗体之间传值--观察者模式
  3. Android 基本面试题
  4. 3D Object Detection——BEV-based methods
  5. VTK:结构化网格之BlankPoint
  6. ASP.NET Eval如何进行数据绑定
  7. 贵州计算机专业强的专科学校,贵州排名靠前的五年制大专学校--贵州计算机学校...
  8. 【原创】一个亿级数据库优化过程
  9. 华为xs第几批升级鸿蒙,华为鸿蒙升级名单已确认!这44款机型将优先升级,花粉有福了...
  10. golang goroutine协程运行机制及使用详解
  11. vue 图片复制黏贴上传_# quill-image-extend-module :完成vue-quill-editor图片上传,复制粘贴,拖拽...
  12. [NLP]OpenNLP词形还原器(Lemmatizer)的使用
  13. linux远程连接windows桌面背景,Centos远程Windows桌面_远程桌面
  14. qlineedit显示提示框_如何将输入焦点设置为Qt中显示的对话框?
  15. 南邮JAVA程序设计实验3 流处理程序设计
  16. 不用PyScript,网页端运行的Python编辑器
  17. 整理的apollo 入门课程
  18. Linux 查找项目路径
  19. 原华为区块链科学家黄连金先生受邀担任Hashgard基金会战略顾问
  20. P2357 守墓人(树状数组/线段树)

热门文章

  1. string equals java_Java equals比较方法(Java StringEquals)
  2. linux下强制卸载,linux下强制卸载挂接点
  3. 百度地图json_R: 民政部官网市级行政地图的绘制
  4. python的设计哲学_Python的设计哲学--zen of Python
  5. html生成器_这些文案生成器,你知道几个?
  6. 图:成都第三医院知识竞赛于9月29日圆满结束,PPT题目界面一览
  7. 运维 如何选择最合适的服务器方案(一):服务器硬件配置
  8. db powerdesigner设计mysql数据库表
  9. 库克:苹果正在开发“会震爆你”的未来产品
  10. 亚马逊AWS营收1700亿,阿里云213亿,差距巨大能追赶吗?...