• 关于@RequestBody注解详解


    关于@RequestBody注解详解

    加了@RequestBody注解后前端调用参数设置问题(2021.7.21)

    1、@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。@RequestBody接受的是一个json格式的字符串,一定是一个字符串。

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

    例如说以下情况:

    $.ajax({
            url:"/login",
            type:"POST",
            data:'{"userName":"admin","pwd","admin123"}',
            content-type:"application/json charset=utf-8",  //要特别注意后台接口是否加了@RequestBody,决定了传递参数的类型
            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中的属性名,否则是请求不过去的。

    @requestMapping("/login")
        public void login(@requestBody User user){
          System.out.println(userName+" :"+pwd);
        }
    

    总结和注意:

    1.@RequestBody接受的是一个json格式的字符串,一定是一个字符串。

    2.在使用springmvc的做项目时,不要将JSON字符串和JSON对象混淆了。

    3.加了@RequestBody注解的参数类型是一个json的字符串,不是一个对象,前端调用接口的时候特别要注意参数传递的类型。(可以通过JSON.stringify(Json_Str) 该方法把前端的字符串格式化了在发送 )

  • 相关阅读:
    安装composer后报错proc_open(): fork failed
    ZOJ4063 Tournament [The 2018 ACM-ICPC Asia Qingdao Regional Contest]
    BZOJ1191: [HNOI2006]超级英雄Hero
    BZOJ1270: [BeijingWc2008]雷涛的小猫
    BZOJ1303 [CQOI2009]中位数图
    BZOJ1192 [HNOI2006]鬼谷子的钱袋
    BZOJ1003 [ZJOI2006]物流运输 最短路+DP
    牛客国庆集训派对Day6 E-Growth
    BZOJ2208 [Jsoi2010]连通数
    BZOJ2761 [JLOI2011]不重复数字
  • 原文地址:https://www.cnblogs.com/consttree/p/15048868.html
Copyright © 2020-2023  润新知