springMVC传递List和数组到后端

本文介绍如何在Spring MVC中配置JSON解析器,并通过POST方法实现List和数组的JSON数据交互。详细展示了前后端代码示例及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这种方法就,仅支持post,但是必须要在消息转换器中配置JSON解析器

1
<bean  class = "org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" ></bean>

并注册到RequestMappingHandlerAdaptermessageConverters中。

Controller如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
  * 这里可以接受List,Array,Set等,写法是一样的,注意前端写法<br>
  * 另外这个必须要使用MappingJacksonHttpMessageConverter这个消息转换器
  * 请看我上面的配置
  * @param user
  * @return
  */
  @ResponseBody
  @RequestMapping ( "user2" )
  public  String user2( @RequestBody  List<User> user){
          System.out.println(user.size());
          return  "" ;
  }

JavaScript如下

1
2
3
4
5
6
7
8
9
10
11
12
13
var  userList=  new  Array();
userList.push({userName: "xx" ,address: "fff" });
userList.push({userName: "zzzz" ,address: "ggggg" });
$.ajax({
   url: "request/user2" ,
   type: "post" ,
   data:JSON.stringify(userList),
   dataType: "json" ,
   contentType: "application/json" ,
   success: function (data){
    },error: function (data){
   }
});

该方法仅支持POST的方式,会使用到json2.js这个类库,注意设置contentType:"application/json"这个属性,否则会报415未知的类型异常。


传递简单的字符串数组,仅支持POST方式

1
2
3
4
5
6
7
8
9
10
11
12
/**
* 传递简单的字符串数组
* 这个方法只支持POST
* @param s
* @return
*/
@ResponseBody
@RequestMapping ( "array" )
public  String array( @RequestBody  String[] s){
     System.out.println(s.length);
     return  "" ;
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var  array= new  Array();
array.push(1);
array.push(2);
array.push(3);
array.push(4);
array.push(5);
$.ajax({
     url: "request/array" ,
     type: "post" ,
     dataType: "json" ,
     data:JSON.stringify(array),
     dataType: "json" ,
     contentType: "application/json" ,
     success: function (data){
     },error: function (data){
     }
});

和上面的方法类似,注意contentType:"application/json",否则同样的415错误。



另一个例子:

第3种方法:将Json对象序列化成Json字符串提交,以List接收 
HTML代码:

<head>
    <title>submitUserList_3</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <script language="JavaScript" src="/js/jquery.min.js" ></script>
    <script language="JavaScript" src="/js/jquery.json.min.js" ></script>
    <script type="text/javascript" language="JavaScript">
        function submitUserList_3() {alert("ok");
            var customerArray = new Array();
            customerArray.push({id: "1", name: "李四", pwd: "123"});
            customerArray.push({id: "2", name: "张三", pwd: "332"});
            $.ajax({
                url: "/user/submitUserList_3",
                type: "POST",
                contentType : 'application/json;charset=utf-8', //设置请求头信息
                dataType:"json",
                //data: JSON.stringify(customerArray),    //将Json对象序列化成Json字符串,JSON.stringify()原生态方法
                data: $.toJSON(customerArray),            //将Json对象序列化成Json字符串,toJSON()需要引用jquery.json.min.js
                success: function(data){
                    alert(data);
                },
                error: function(res){
                    alert(res.responseText);
                }
            });
        }
    </script>
</head>

<body>
    <h1>submitUserList_3</h1>
    <input id="submit" type="button" value="Submit" onclick="submitUserList_3();">
</body>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

Java代码:

    @RequestMapping(value = "/submitUserList_3", method ={RequestMethod.POST})
    @ResponseBody
    public String submitUserList_3(@RequestBody List<User> users)
            throws Exception{
        String result = "";
        if(users == null || users.size() <= 0){ return "No any ID.中文"; }
        result = this.showUserList(users);
        return result;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值