欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC參數(shù)的傳遞之如何接收List數(shù)組類型的數(shù)據(jù)

 更新時間:2022年10月26日 11:28:45   作者:lxcoding  
這篇文章主要介紹了SpringMVC參數(shù)的傳遞之如何接收List數(shù)組類型的數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

前言

本文主要是記錄SpringMVC中當(dāng)前臺傳過來數(shù)組的時候,如何把前臺傳過來的數(shù)據(jù)封裝到Controller層方法的形參中。

在了解下面參數(shù)如何傳遞前先記住兩個結(jié)論

  • 當(dāng)Ajax以application/x-www-form-urlencoded編碼格式上傳數(shù)據(jù),必須使用JSON對象傳遞數(shù)據(jù),后臺需要使用@RequestParam 或者HttpServletRequest來接收數(shù)據(jù)
  • 當(dāng)Ajax以application/json編碼格式上傳數(shù)據(jù),必須使用JSON字符串傳遞數(shù)據(jù),后臺需要使用@RquestBody標識參數(shù)來獲取數(shù)據(jù),使用Map或者實體對象來接收數(shù)據(jù),如果只單單是接收一個數(shù)組,可以使用List來接收數(shù)據(jù)。

1.前臺發(fā)送String和基本類型數(shù)組

前臺數(shù)據(jù)的發(fā)送(發(fā)送json對象(或js對象)

$(function () {
    var obj={};
    obj.name="李四";
    obj.nums=[1,2,3];
    $.ajax({
        url: "/param/test1",
        type:"POST",
        contentType:"application/x-www-form-urlencoded",
        data:obj,
        dataType:"json",
        success:function(data){
        }
    })
})

后臺接收數(shù)據(jù)

后臺接收數(shù)據(jù)時的形參必須和前臺表單里的字段名一樣(如果不一致要使用@RequestParam聲明,數(shù)組必須聲明)

 	@RequestMapping(value = "/test1", method = RequestMethod.POST)
    @ResponseBody
    private String Test1(String name,@RequestParam("nums[]") Integer[] nums) {
        System.out.println(name);
        for(int i=0;i<nums.length;i++){
            System.out.println(nums[i]);
        }
        return "success";
    }

當(dāng)然,也可以使用List來接收

	@RequestMapping(value = "/test1", method = RequestMethod.POST)
    @ResponseBody
    private String Test1(String name,@RequestParam("nums[]") List<Integer> nums) {
        System.out.println(name);
        System.out.println(nums);
        return "success";
    }

對于上面的這兩種接收方式只適用于接收基本類型或包裝類型的數(shù)組。

2.前臺發(fā)送String類型和對象數(shù)組

一些將要使用的類

public class User {
    private String name;
    private int age;
	//getter and setter...
}
public class StringAndList {
    private List<User> users;
    private String name;
	//getter and setter...
}

前端發(fā)送json字符串(注意:這里使用application/json

$(function () {
    var obj={};
    obj.name="展示";
    var user1={"name":"李四","age":1};
    var user2={"name":"網(wǎng)四","age":23};
    obj.users=[];
    obj.users.push(user1);
    obj.users.push(user2);
    var s=JSON.stringify(obj);
    $.ajax({
        url: "/param/test1",
        type:"POST",
        contentType:"application/json",//注意編碼格式
        data:JSON.stringify(obj),//"{"name":"展示","users":[{"name":"李四","age":1},{"name":"網(wǎng)四","age":23}]}"

        dataType:"json",
        success:function(data){
        }
    })
})

后臺接收數(shù)據(jù)

一個方法中只允許有一個@RequestBody修飾的參數(shù)(此時方法中只可以有一個形參),它實際上是將輸入流的body體作為一個整體進行轉(zhuǎn)換,而body整體只有一份,解析完成之后會關(guān)閉輸入流。

如果傳入多個參數(shù)則會報錯,除非自定義參數(shù)解析器。

所以當(dāng)我們既要接收String參數(shù),又要接收對象數(shù)組的時候,我們只能把這兩個參數(shù)封裝在一個自定義類中。

	@RequestMapping(value = "/test1", method = RequestMethod.POST)
    @ResponseBody
    private String Test1(@RequestBody StringAndList sal) {
        System.out.println(sal);
        return "success";
    }

前面不是說可以使用Map來接收數(shù)據(jù)嗎,那使用Map來接收的數(shù)據(jù)是怎么樣的呢?

我們來試試

	@RequestMapping(value = "/test1", method = RequestMethod.POST)
    @ResponseBody
    private String Test1(@RequestBody Map<String,Object> map) {
        return "success";
    }

通過debug,我們可以發(fā)現(xiàn)map保存的數(shù)據(jù)是什么(我們可以把傳過來的json對象中的屬性-值想象成一個個key-value,就不難理解為什么可以用Map接收了)

3.前臺只發(fā)送對象數(shù)組

上面展示了同時接收其他類型和對象數(shù)組的情況,那么如果只接收對象數(shù)組呢?

前端發(fā)送json字符串

$(function () {
    var obj=[];
    var user1={"name":"李四","age":1};
    var user2={"name":"網(wǎng)四","age":23};
    obj.push(user1);
    obj.push(user2);
    var s=JSON.stringify(obj);//"[{"name":"李四","age":1},{"name":"網(wǎng)四","age":23}]"
    $.ajax({
        url: "/param/test1",
        type:"POST",
        contentType:"application/json",
        data:JSON.stringify(obj),
        dataType:"json",
        success:function(data){
        }
    })
})

后臺接收數(shù)據(jù)

因為只要接收數(shù)組,所以不用自定義一個類來封裝數(shù)據(jù)

	@RequestMapping(value = "/test1", method = RequestMethod.POST)
    @ResponseBody
    private String Test1(@RequestBody List<User> users) {//參數(shù)名任意
        System.out.println(users);
        return "success";
    }

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring?Boot接口支持高并發(fā)具體實現(xiàn)代碼

    Spring?Boot接口支持高并發(fā)具體實現(xiàn)代碼

    這篇文章主要給大家介紹了關(guān)于Spring?Boot接口支持高并發(fā)具體實現(xiàn)的相關(guān)資料,在SpringBoot項目中通常我們沒有處理并發(fā)問題,但是使用項目本身還是支持一定的并發(fā)量,需要的朋友可以參考下
    2023-08-08
  • springboot代碼,注解配置獲取yml,properties文件的map即鍵值對

    springboot代碼,注解配置獲取yml,properties文件的map即鍵值對

    這篇文章主要介紹了springboot代碼,注解配置獲取yml,properties文件的map即鍵值對,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 詳解Java注解教程及自定義注解

    詳解Java注解教程及自定義注解

    這篇文章主要為大家詳細介紹了Java注解教程及自定義注解,幫助大家更好地學(xué)習(xí)Java注解,感興趣的小伙伴們可以參考一下
    2016-01-01
  • java集合中的list詳解

    java集合中的list詳解

    這篇文章主要介紹了java集合中的list詳解,還是比較不錯的,這里分享給大家,需要的朋友可以參考下。
    2017-11-11
  • Java基礎(chǔ)知識之I/O流和File類文件操作

    Java基礎(chǔ)知識之I/O流和File類文件操作

    眾所周知java語言提供給程序員非常多的包供編程時使用,方便又快捷,下面這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)知識之I/O流和File類文件操作的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Spring通過ApplicationContext主動獲取bean的方法講解

    Spring通過ApplicationContext主動獲取bean的方法講解

    今天小編就為大家分享一篇關(guān)于Spring通過ApplicationContext主動獲取bean的方法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • mybatis plus表的創(chuàng)建時間和修改時間的操作方法

    mybatis plus表的創(chuàng)建時間和修改時間的操作方法

    這篇文章主要介紹了mybatis plus表的創(chuàng)建時間和修改時間的實現(xiàn)方法,本文給大家分享兩種方法,每種方法通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • Java處理不可見特殊字符要點解析

    Java處理不可見特殊字符要點解析

    這篇文章主要介紹了Java處理不可見特殊字符要點解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • spring mvc4中相關(guān)注解的詳細講解教程

    spring mvc4中相關(guān)注解的詳細講解教程

    這篇文章主要給大家介紹了關(guān)于spring mvc4中相關(guān)注解的相關(guān)資料,其中詳細介紹了關(guān)于@Controller、@RequestMapping、@RathVariable、@RequestParam及@RequestBody等等注解的相關(guān)內(nèi)容,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • java rocketmq--消息的產(chǎn)生(普通消息)

    java rocketmq--消息的產(chǎn)生(普通消息)

    這篇文章主要介紹了java rocketmq--消息的產(chǎn)生(普通消息),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2019-06-06

最新評論