最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

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

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

前臺(tái)數(shù)據(jù)的發(fā)送(發(fā)送json對(duì)象(或js對(duì)象)

$(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){
        }
    })
})

后臺(tái)接收數(shù)據(jù)

后臺(tái)接收數(shù)據(jù)時(shí)的形參必須和前臺(tái)表單里的字段名一樣(如果不一致要使用@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來(lái)接收

	@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";
    }

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

2.前臺(tái)發(fā)送String類型和對(duì)象數(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){
        }
    })
})

后臺(tái)接收數(shù)據(jù)

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

如果傳入多個(gè)參數(shù)則會(huì)報(bào)錯(cuò),除非自定義參數(shù)解析器。

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

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

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

我們來(lái)試試

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

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

3.前臺(tái)只發(fā)送對(duì)象數(shù)組

上面展示了同時(shí)接收其他類型和對(duì)象數(shù)組的情況,那么如果只接收對(duì)象數(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){
        }
    })
})

后臺(tái)接收數(shù)據(jù)

因?yàn)橹灰邮諗?shù)組,所以不用自定義一個(gè)類來(lái)封裝數(shù)據(jù)

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

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

相關(guān)文章

  • JavaPoet的使用指南小結(jié)

    JavaPoet的使用指南小結(jié)

    這篇文章主要介紹了JavaPoet的使用指南小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Java JFinal框架中實(shí)現(xiàn)添加定時(shí)任務(wù)功能詳解

    Java JFinal框架中實(shí)現(xiàn)添加定時(shí)任務(wù)功能詳解

    這篇文章主要為大家詳細(xì)介紹了如何在JFinal框架項(xiàng)目中添加定時(shí)任務(wù)的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • Java Chaos Game噪聲游戲?qū)嵗a

    Java Chaos Game噪聲游戲?qū)嵗a

    這篇文章主要介紹了Java Chaos Game噪聲游戲?qū)嵗a,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 詳解Java并發(fā)之Condition

    詳解Java并發(fā)之Condition

    這篇文章主要介紹了Java并發(fā)編程之Condition,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Mybatis-plus多條件篩選分頁(yè)的實(shí)現(xiàn)

    Mybatis-plus多條件篩選分頁(yè)的實(shí)現(xiàn)

    本文主要介紹了Mybatis-plus多條件篩選分頁(yè),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Spring核心容器之BeanDefinition解析

    Spring核心容器之BeanDefinition解析

    這篇文章主要介紹了Spring核心容器之BeanDefinition解析,Spring 將管理的對(duì)象稱之為 Bean,容器會(huì)先實(shí)例化 Bean,然后自動(dòng)注入,實(shí)例化的過(guò)程就需要依賴 BeanDefinition,需要的朋友可以參考下
    2023-11-11
  • Java Retrofit源碼層深入分析

    Java Retrofit源碼層深入分析

    這篇文章主要介紹了Java Retrofit源碼層分析,Retrofit是一個(gè)RESTful的HTTP網(wǎng)絡(luò)請(qǐng)求框架的封裝,網(wǎng)絡(luò)請(qǐng)求的工作本質(zhì)上是OkHttp完成,而Retrofit僅負(fù)責(zé)網(wǎng)絡(luò)請(qǐng)求接口的封裝
    2023-01-01
  • idea新建maven項(xiàng)目沒(méi)有src目錄的操作方法

    idea新建maven項(xiàng)目沒(méi)有src目錄的操作方法

    這篇文章主要介紹了idea新建maven項(xiàng)目沒(méi)有src目錄的兩種操作方法,需要的朋友可以參考下
    2018-03-03
  • Java設(shè)計(jì)模式之外觀模式的實(shí)現(xiàn)方式

    Java設(shè)計(jì)模式之外觀模式的實(shí)現(xiàn)方式

    這篇文章主要介紹了Java設(shè)計(jì)模式之外觀模式的實(shí)現(xiàn)方式,外觀模式隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供了一個(gè)客戶端可以訪問(wèn)系統(tǒng)的接口,這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它向現(xiàn)有的系統(tǒng)添加一個(gè)接口,來(lái)隱藏系統(tǒng)的復(fù)雜性,需要的朋友可以參考下
    2023-11-11
  • java實(shí)現(xiàn)ftp上傳 如何創(chuàng)建文件夾

    java實(shí)現(xiàn)ftp上傳 如何創(chuàng)建文件夾

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)ftp上傳的相關(guān)資料,教大家如何創(chuàng)建文件夾?具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04

最新評(píng)論

长白| 台中县| 武威市| 伊宁市| 巴中市| 泗洪县| 威宁| 石棉县| 潜山县| 张家界市| 漾濞| 连云港市| 常德市| 邵东县| 济源市| 安仁县| 衢州市| 尤溪县| 东海县| 南陵县| 依兰县| 广宁县| 含山县| 馆陶县| 元谋县| 罗田县| 大同市| 英吉沙县| 瑞安市| 崇文区| 保德县| 得荣县| 宝应县| 富宁县| 沛县| 赞皇县| 炎陵县| 澳门| 海伦市| 库尔勒市| 邹平县|