ajax交互方式

ajax请求:
1.contentType为application/x-www-form-urlencoded(默认情况,数据传输格式key=value&key=value)
    public class User {
         private long id;
         private Integer age;
         private String name;
    }

    public class Person {
        private User user;
        private List<User> list;
    }
    1.1 前端直接传key=value&key=value形式的data:后端可以直接在方法参数上接收,或者通过request.getParameter("key")获取参数
         var user = {
                 id: "111",
                 age: "18",
                 name: "唐哲旭"
            };
            contentType: "application/x-www-form-urlencoded"      
      data: {
         id: "111",
         age: "18",
         name: "唐哲旭"
      }等价于:data:user,
      数据在浏览器中的传输格式: id=111&age=18&name=%E5%94%90%E5%93%B2%E6%97%AD
      public Object test(User user) {};
      或者request.getParemeter("id");
  1.2 前端传key=value&key=value形式的data,value为对象:后端无法接收数据
          var user = {
                 id: "111",
                 age: "18",
                 name: "唐哲旭"
            };
            contentType: "application/x-www-form-urlencoded",
      data: {
         user:user
      },
      数据在浏览器中的传输格式:user%5Bid%5D=111&user%5Bage%5D=18&user%5Bname%5D=%E5%94%90%E5%93%B2%E6%97%AD
  1.3 前端直接传JSON字符串形式的data:后端无法接收数据
            var user = {
                id: "111",
                age: "18",
                name: "唐哲旭"
            };
            contentType: "application/x-www-form-urlencoded",
            data: JSON.stringify(user),
      数据在浏览器中的传输格式:{"id":"111","age":"18","name":"唐哲旭"}
   1.4 前端传key=value&key=value形式的data,value为JSON字符串形式的值:后端无法在方法参数上接收数据,可以通过request.getParameter("key")获取
               var user = {
                    id: "111",
                    age: "18",
                    name: "唐哲旭"
                };
                contentType: "application/x-www-form-urlencoded",
        data: {
            user:JSON.stringify(user)
        },
                数据在浏览器中的传输格式:user=%7B%22id%22%3A%22111%22%2C%22age%22%3A%2218%22%2C%22name%22%3A%22%E5%94%90%E5%93%B2%E6%97%AD%22%7D
                String user=request.getParemeter("user")
                user字符串输出的值:{"id":"111","age":"18","name":"唐哲旭"}


2.contentType: "application/json;charset=utf-8"
  2.1 前端传对象形式的data,数据在浏览器中的传输格式还是为key=value&key=value,这时后端无法接收数据
          var user = {
                    id: "111",
                    age: "18",
                    name: "唐哲旭"
              };
       contentType: "application/json;charset=utf-8",
       data: user,
       数据在浏览器中的传输格式: id=111&age=18&name=%E5%94%90%E5%93%B2%E6%97%AD
   2.2 前端直接传JSON字符串形式的data,后端在方法参数上加上@RequestBody注解接收数据
             var user = {
                    id: "111",
                    age: "18",
                    name: "唐哲旭"
                };
             contentType: "application/json;charset=utf-8",
        data: JSON.stringify(user),
        数据在浏览器中的传输格式:{"id":"111","age":"18","name":"唐哲旭"}
        public Object test(@RequestBody User user){};
        或者 public Object test(@RequestBody HashMap map){};(map中类型也和前端传的类型对应,比如此时value类型为User)
   2.3 前端直接传JSON字符串形式的data,JSON字符串为嵌套类型,后端在方法参数上加上@RequestBody注解接收数据
                var person = {
                    user: {
                        id: "111",
                        age: "18",
                        name: "唐哲旭"
                     },
                     list: [{
                        id: "222",
                        age: "19",
                        name: "唐哲旭222"
                     }, {
                        id: "333",
                        age: "20",
                        name: "唐哲旭333"
                      }, {
                        id: "444",
                        age: "21",
                        name: "唐哲旭444"
                      }]
                };
            contentType: "application/json;charset=utf-8",
        data: JSON.stringify(person),
        数据在浏览器中的传输格式: {"user":{"id":"111","age":"18","name":"唐哲旭"},"list":[{"id":"222","age":"19","name":"唐哲旭222"},{"id":"333","age":"20","name":"唐哲旭                                            333"},{"id":"444","age":"21","name":"唐哲旭444"}]}
          public Object test(@RequestBody Person person){};
         或者 public Object test(@RequestBody HashMap map){};(map中key的名称和value类型都与前端传的类型对应,比如此时key为user和list,value类型为User和                List<User>)

   2.4 前端直接传JSON字符串形式的data,字符串的key和后端JavaPojo属性名称不同,在JavaPojo类的属性上加上@JsonProperty("key")注解
         public class User {
                 private long id;
                 @JsonProperty("user_age")
                 private Integer age;
                 @JsonProperty("user_name")
                 private String name;
            }

            public class Person {
        @JsonProperty("user_user")
                private User user;
        @JsonProperty("user_list")
                private List<User> list;
            }
          var person = {
                    user_user: {
                        id: "111",
                        user_age: "18",
                        user_name: "唐哲旭"
                     },
                     user_list: [{
                        id: "222",
                       user_age: "19",
                       user_name: "唐哲旭222"
                     }, {
                        id: "333",
                       user_age: "20",
                       user_name: "唐哲旭333"
                      }, {
                        id: "444",
                       user_age: "21",
                       user_name: "唐哲旭444"
                      }]
                };
                 contentType: "application/json;charset=utf-8",
        data: JSON.stringify(person),
        数据在浏览器中的传输格式: {"user_user":{"id":"111","user_age":"18","user_name":"唐哲旭"},"user_list":[{"id":"222","user_age":"19","user_name":"唐哲旭222"},                                                 {"id":"333","user_age":"20","user_name":"唐哲旭333"},{"id":"444","user_age":"21","user_name":"唐哲旭444"}]}
          public Object test(@RequestBody Person person){};
         或者 public Object test(@RequestBody HashMap map){};(map中key的名称和value类型都与前端传的类型对应,比如此时key为user_user和user_list,value类型为            User和List<User>)
        此时Person对象属性还是为user和list,如果将Person对象转成Json字符串,则变成user_user和user_list,User对象中也变成user_name和user_age
         如果用方法参数上用Map接收,则Map的key为user_user和user_list,user_user中也变成user_name和user_age

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值