iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >@RequestBody,@RequestParam和@Param的区别是什么
  • 504
分享到

@RequestBody,@RequestParam和@Param的区别是什么

2023-06-29 12:06:02 504人浏览 安东尼
摘要

这篇文章主要介绍了@RequestBody,@RequestParam和@Param的区别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。@RequestBody,@Re

这篇文章主要介绍了@RequestBody,@RequestParam和@Param的区别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。


@RequestBody,@RequestParam和@Param区别

@Param

@Param是mybatis中的注解,用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中 。请看下面的示例:

public interface Mapper {    @Select("select s_id id,s_name name,class_id classid from student where  s_name= #{aaaa} and class_id = #{bbbb}")     public Student select(@Param("aaaa") String name,@Param("bbbb")int class_id);     @Delete......        @Insert......     }

@RequestBody

@requestBody注解常用来处理content-type不是默认的application/x-www-fORM-urlcoded编码的内容,比如说:application/JSON或者是application/xml等。一般情况下来说常用其来处理application/json类型。

通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。

例如说以下情况:

 $.ajax({url:"/login",type:"POST",data:'{"userName":"admin","pwd","admin123"}',content-type:"application/json charset=utf-8",success:function(data){  alert("request success ! ");}});
@requestMapping("/login")public void login(@requestBody String userName,@requestBody String pwd){  System.out.println(userName+" :"+pwd);}

这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是呢假如我有一个User类,拥有如下字段:

String userName;String pwd;

那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上

需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。 

处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。

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

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

@RequestParam

用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型)

RequestParam可以接受简单类型的属性,也可以接受对象类型。 

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

在Content-Type: application/x-www-form-urlencoded的请求中,get方式中queryString的值,和post方式中 body data的值都会被Servlet接受到并转化到Request.getParameter()参数集中,所以@RequestParam可以获取的到。

@RequestParam使用注意事项

  • @RequestParam:将请求参数绑定到你控制器的方法参数上

该注解中有一个属性required,表示是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。

但是大家使用的时候不要产生误区,required=true是能校验请求中是否包含该参数,但是不能校验参数值是否为空.

比如下面的接口

@RequestBody,@RequestParam和@Param的区别是什么

http://127.0.0.1:9802/api/order/vr/testRequestParam这样是可以被拦截下来的,因为请求参数中不存在param1这个参数

但是http://127.0.0.1:9802/api/order/vr/testRequestParam?param1是可以请求成功的

为了拦截到参数为空的请求

还需要在参数中加 @Valid @NotBlank

如下:

@RequestBody,@RequestParam和@Param的区别是什么

感谢你能够认真阅读完这篇文章,希望小编分享的“@RequestBody,@RequestParam和@Param的区别是什么”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: @RequestBody,@RequestParam和@Param的区别是什么

本文链接: https://www.lsjlt.com/news/324698.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • @RequestBody,@RequestParam和@Param的区别是什么
    这篇文章主要介绍了@RequestBody,@RequestParam和@Param的区别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。@RequestBody,@Re...
    99+
    2023-06-29
  • @RequestBody,@RequestParam和@Param的区别说明
    目录@RequestBody,@RequestParam和@Param区别@Param@RequestBody@RequestParam@RequestParam使用注意事项比如下面...
    99+
    2024-04-02
  • Java中POST、GET、@RequestBody和@RequestParam区别详析
    目录@RequestParam@RequestBody后端解析json数据POST请求时总结参考:@RequestParam 注解@RequestParam接收的参数是来自HTTP请...
    99+
    2022-11-13
    post get区别 @requestbody和@requestparam区别
  • Spring Boot中@PathVariable、@RequestParam和@RequestBody的区别和使用
    title: springboot中@PathVariable、@RequestParam和@RequestBody的区别和使用 date: 2020-11-02 tags: springspringbootspring注解注解@Requ...
    99+
    2023-08-30
    spring boot java restful
  • @RequestParam、@PathParam、@PathVariable三者有什么区别
    本篇文章为大家展示了@RequestParam、@PathParam、@PathVariable三者有什么区别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。@RequestParam 和 @Path...
    99+
    2023-06-06
  • 基于@RequestParam name和value属性的区别
    目录基于name和value属性的区别RequestParam内部有4个参数@RequestParam,参数是否必须传的问题一、源码展示二、说明2.1 @RequestParam2....
    99+
    2024-04-02
  • linux param指的是什么
    这篇文章主要介绍“linux param指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux param指的是什么”文章能帮助大家解决问题。 ...
    99+
    2023-03-10
    linux param
  • ./ 和 sh 的区别是什么
    ./ 和 sh 的区别是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。./ 和 sh的使用区别使用“./”执行脚本,对应的xxx.sh脚本必须要有执行权限;使用“sh”...
    99+
    2023-06-09
  • 基于params、@PathVariabl和@RequestParam的用法与区别说明
    方法参数相关属性params、@PathVariabl和@RequestParam的使用 【1】params params:指定request中必须包含某些参数值是,才让该方法处理。...
    99+
    2024-04-02
  • html5和h5的区别是什么
    这期内容当中小编将会给大家带来有关html5和h5的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。html是什么html的全称为超文本标记语言,它是一种标记语言,包含了一系列标签.通过这些标签可...
    99+
    2023-06-06
  • ram和rom的区别是什么
    这篇文章主要介绍“ram和rom的区别是什么”,在日常操作中,相信很多人在ram和rom的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ram和rom的区别是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-03
  • JavaScript和Python的区别是什么
    JavaScript和Python的区别是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python VS JavaScript:应用上的差异Python由...
    99+
    2023-06-15
  • MYSQL中#和$的区别是什么
    小编给大家分享一下MYSQL中#和$的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!他们之间的区别用最直接的话来说就是...
    99+
    2024-04-02
  • MySQL中“:=”和“=”的区别是什么
    小编给大家分享一下MySQL中“:=”和“=”的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!=只有在set和upda...
    99+
    2024-04-02
  • Object和Component的区别是什么
    这篇文章给大家介绍Object和Component的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  由于Componet引入了事件、行为,因此,它并非简单继承了Object...
    99+
    2024-04-02
  • MYSQL和SQL的区别是什么
    本篇内容介绍了“MYSQL和SQL的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MYSQL和S...
    99+
    2024-04-02
  • wap和html5的区别是什么
    这篇文章主要介绍“wap和html5的区别是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“wap和html5的区别是什么”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • div和css的区别是什么
    这篇文章主要介绍“div和css的区别是什么”,在日常操作中,相信很多人在div和css的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”div和css的区别是什么”...
    99+
    2024-04-02
  • ubuntu和linux的区别是什么
    ubuntu和linux的区别是:1.概念不同、2.基础不同等。概念不同,linux是一套免费使用和自由传播的类Unix操作系统,而ubuntu是一个以桌面应用为主的linux操作系统。.基础不同,linux是一个基于POSIX和Unix的...
    99+
    2024-04-02
  • PHP和Python的区别是什么
    1、设计哲学不同 PHP:PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,主要是为了Web开发而设计,简单、快速并且灵活。 Python:Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,它的设计哲学...
    99+
    2023-10-29
    区别 PHP Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作