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

SpringMVC參數(shù)傳遞之基本數(shù)據(jù)類型和復雜對象說明

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

前言

本文主要記錄SpringMVC如何接收前臺傳過來的基本數(shù)據(jù)類型和對象,以及可能出現(xiàn)的組合。

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

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

下面可能會用到的一些類

public class User {
    private String name;
    private int age;
	//getter and setter...
}

1.當簡單接收基本數(shù)據(jù)類型和包裝類型的時候

當前臺發(fā)送過來一些基本類型或包裝類型的數(shù)據(jù),可以直接使用基本類型或包裝類型形參接收,或者把這些參數(shù)封裝在對象中,使用對象來接收。

前臺發(fā)送json對象(application/x-www-form-urlencoded)

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

后臺使用基本類型或包裝類型形參接收數(shù)據(jù)

形參名必須和前臺發(fā)送過來的屬性名統(tǒng)一,如果不相同(前臺是age字段,后臺使用userAge字段接收),可以使用@RequestParam聲明是要接收哪個字段的值

@RequestMapping(value = "/test1", method = RequestMethod.POST)
@ResponseBody
private String Test1(String name,@RequestParam("age")int  userAge) {
   System.out.println(name);
   System.out.println(userAge);
   return "success";
}

當然這里也可以使用對象來接收,前提是對象的成員變量名必須和json對象的屬性名一致。

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

2.當接收復雜對象的時候

當從前臺發(fā)過來的json對象中又包含對象的時候,我們可以考慮用Map集合接收,或者使用自定義類來封裝。

前端發(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.user1=user1;
    obj.users.user2=user2;
    var s=JSON.stringify(obj);
    $.ajax({
        url: "/param/test1",
        type:"POST",
        contentType:"application/json",
        data:JSON.stringify(obj),//"{"name":"展示","users":{"user1":{"name":"李四","age":1},"user2":{"name":"網(wǎng)四","age":23}}}"
        dataType:"json",
        success:function(data){
        }
    })
})

使用自定義類來接收

public class StringAndMap {
    private String name;
    private Map<String,User> users;
    //getter and setter....
}
@RequestMapping(value = "/test1", method = RequestMethod.POST)
@ResponseBody
private String Test1(@RequestBody StringAndMap sam) {
    System.out.println(sam.getName());
    Map<String,User> userMap=sam.getUsers();
    System.out.println(userMap.get("user1"));
    System.out.println(userMap.get("user2"));
    return "success";
}

使用Map集合接收

@RequestMapping(value = "/test1", method = RequestMethod.POST)
@ResponseBody
private String Test1(@RequestBody Map<String,Object> map) {
    System.out.println(map.get("name"));
    Map<String,Object> userMap=(Map<String,Object>)map.get("users");
    System.out.println(userMap.get("user1"));
    System.out.println(userMap.get("user2"));
    return "success";
}

接收數(shù)據(jù)后的map形參

無論使用自定義類封裝還是使用Map集合,json對象的屬性名一定要和接收對象的屬性一致。

那我們可不可以使用前臺發(fā)送json對象(application/x-www-form-urlencoded),后臺直接使用自定義類來接收呢?

是不可以的,你們自己可以試試。從以往的經(jīng)驗來看,只要前端發(fā)過來的json對象中包含對象或者數(shù)組,都只能使用前臺發(fā)送json字符串,后臺使用@RequestBody修飾的形參接收。

上面只是講解了關于簡單對象和復雜對象參數(shù)的傳遞,如果對象中涉及到數(shù)組呢?

可以看看我另一篇文章SpringMVC參數(shù)的傳遞——接收List數(shù)組類型的數(shù)據(jù)

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

相關文章

  • RabbitMQ 如何解決消息冪等性的問題

    RabbitMQ 如何解決消息冪等性的問題

    這篇文章主要介紹了RabbitMQ 如何解決消息冪等性的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring MVC參數(shù)校驗詳解(關于`@RequestBody`返回`400`)

    Spring MVC參數(shù)校驗詳解(關于`@RequestBody`返回`400`)

    這篇文章主要介紹了Spring MVC參數(shù)校驗的相關資料,主要是針對`@RequestBody`返回`400`的問題,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-08-08
  • Java中4種校驗注解詳解(值校驗、范圍校驗、長度校驗、格式校驗)

    Java中4種校驗注解詳解(值校驗、范圍校驗、長度校驗、格式校驗)

    這篇文章主要給大家介紹了關于Java中4種校驗注解詳解的相關資料,分別包括值校驗、范圍校驗、長度校驗、格式校驗等,Java注解(Annotation)是一種元數(shù)據(jù),它可以被添加到Java代碼中,并可以提供額外的信息和指令,需要的朋友可以參考下
    2023-08-08
  • 簡單了解java volatile

    簡單了解java volatile

    這篇文章主要介紹了了解java volatile,volatile是Java提供的一種輕量級的同步機制,在并發(fā)編程中,它也扮演著比較重要的角色。下面我們來一起學習一下吧
    2019-05-05
  • 用Java實現(xiàn)聊天程序

    用Java實現(xiàn)聊天程序

    這篇文章主要為大家詳細介紹了用Java實現(xiàn)聊天程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Spring AOP面向切面編程實現(xiàn)原理方法詳解

    Spring AOP面向切面編程實現(xiàn)原理方法詳解

    這篇文章主要介紹了Spring AOP面向切面編程實現(xiàn)原理方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Maven環(huán)境安裝配置和新建項目介紹

    Maven環(huán)境安裝配置和新建項目介紹

    這篇文章介紹了Maven環(huán)境安裝配置和新建項目介紹,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • 記錄一個使用Spring?Data?JPA設置默認值的問題

    記錄一個使用Spring?Data?JPA設置默認值的問題

    這篇文章主要介紹了使用Spring?Data?JPA設置默認值的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java詳解Swing中的幾種常用按鈕的使用

    Java詳解Swing中的幾種常用按鈕的使用

    這篇文章主要介紹了怎么用Java來創(chuàng)建和使用Swing中的幾種常用按鈕,按鈕是我們經(jīng)常要用的工具,但是你有想過自己怎么去實現(xiàn)它嗎,感興趣的朋友跟隨文章往下看看吧
    2022-04-04
  • 帶你了解Java數(shù)據(jù)結構和算法之隊列

    帶你了解Java數(shù)據(jù)結構和算法之隊列

    這篇文章主要為大家介紹了Java數(shù)據(jù)結構和算法之隊列,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評論