溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

springmvc參數(shù)為對(duì)象和數(shù)組的示例分析

發(fā)布時(shí)間:2021-08-21 09:02:21 來源:億速云 閱讀:131 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹springmvc參數(shù)為對(duì)象和數(shù)組的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

參數(shù)為對(duì)象

1、提交表單

2、表單序列化,使用ajax提交

var data = $("#addForm").serialize();
$.ajax({
         url : "addReportDo",   //請(qǐng)求url
         type : "POST",  //請(qǐng)求類型  post|get
         data : data,
         dataType : "text",  //返回?cái)?shù)據(jù)的 類型 text|json|html--
         success : function(result){  //回調(diào)函數(shù) 和 后臺(tái)返回的 數(shù)據(jù)
             alert(result);
         }
     });

3、也可以這樣寫

 var data = {
         title: $("#title").val(),
         note: $("#note").val()
     };

4、如果結(jié)構(gòu)復(fù)雜,使用@RequestBody

需要引用jackson

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.5</version>
</dependency>
 
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.5</version>
</dependency>
 
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.5</version>
</dependency>

springmvc.xml配置

<!--Spring3.1開始的注解 HandlerAdapter -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <!-- json轉(zhuǎn)換器 -->
    <property name="messageConverters">
        <list>
            <ref bean="mappingJackson2HttpMessageConverter" />
        </list>
    </property>
</bean>
 
<bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    <property name="supportedMediaTypes">
        <list>
            <value>text/html;charset=UTF-8</value>
            <value>text/json;charset=UTF-8</value>
            <value>application/json;charset=UTF-8</value>
        </list>
    </property>
</bean>

js寫法

var goods1 = {
    goodsNumber: "001",
    goodsName: "商品A"
}
var goods2 = {
    goodsNumber: "002",
    goodsName: "商品B"
}
var goodsList = [goods1,goods2];
var data = {
    title: $("#title").val(),
    note: $("#note").val(),
    goodsList: goodsList
};
console.log(data);
$.ajax({
    url : "addReportDo",   //請(qǐng)求url
    type : "POST",  //請(qǐng)求類型  post|get
    data : JSON.stringify(data),
    contentType : "application/json",
    dataType : "text",  //返回?cái)?shù)據(jù)的 類型 text|json|html--
    success : function(result){  //回調(diào)函數(shù) 和 后臺(tái)返回的 數(shù)據(jù)
        alert(result);
    }
});

注意ajax的兩個(gè)屬性,data屬性變?yōu)镴SON.stringify(data),增加contentType屬性。

controller代碼寫法

@ResponseBody
@RequestMapping("addReportDo")
public String addReportDo(@RequestBody Report report){
    System.out.println(report);
    return "ok";
}

在參數(shù)前面加上@RequestBody即可。

5、傳遞數(shù)組

js寫法

var array = ["a","b","c"];
var data = {
    array : array
};
console.log(data);
$.ajax({
    url : "addReportDo",   //請(qǐng)求url
    type : "POST",  //請(qǐng)求類型  post|get
    data : data,
    dataType : "text",  //返回?cái)?shù)據(jù)的 類型 text|json|html--
    success : function(result){  //回調(diào)函數(shù) 和 后臺(tái)返回的 數(shù)據(jù)
        alert(result);
    }
});

controller寫法

@ResponseBody
@RequestMapping("addReportDo")
public String addReportDo(@RequestParam("array[]")  String[] array){
    System.out.println(Arrays.toString(array));
    return "ok";
}

也可以用List接收

@ResponseBody
@RequestMapping("addReportDo")
public String addReportDo(@RequestParam("array[]") List<String> list){
   System.out.println(list);
   return "ok";
}

springmvc接受復(fù)雜對(duì)象(對(duì)象數(shù)組)

前端:

將請(qǐng)求頭改為

contentType:"application/json;charset=UTF-8"

后端:

自定義一個(gè)對(duì)象,將參數(shù)封裝進(jìn)該對(duì)象中

@Data
public class CaseBodyEntity {
    String token;
    CaseBasicModel caseBasic;
    String[] keywords;
    CaseInsurantAndProductModel[] caseInsurantAndProductModels;
    CaseExperienceModel[] caseExperiences;
    CaseAssessModel[] caseAssesses;
}

使用使用POST方式接受請(qǐng)求,@RequestBody接受請(qǐng)求參數(shù),對(duì)象為自定義的接受對(duì)象

@ApiOperation("添加或更新案例,后臺(tái)")
    @PostMapping("/addOrUpdateCase")
    public JSONObject addOrUpdateCase(
            @RequestBody CaseBodyEntity caseBodyEntity
    ) {
        ...
    }

@RequestBody和@RequestParam的區(qū)別

  • @RequestParam,主要處理contentType為application/x-www-form-urlencoded的數(shù)據(jù)(默認(rèn));@ResponseBody:主要處理contentType不為application/x-www-form-urlencoded的數(shù)據(jù),例如:application/json;charset=UTF-8

  • @RequestParam:要指明前端傳過來的參數(shù)名并與其對(duì)應(yīng);@RequestBody:直接對(duì)象接收,屬性名要與前端傳過來的數(shù)據(jù)的key值對(duì)應(yīng)

  • 使用@RequestParam:Content-Type為application/x-www-form-urlencoded,參數(shù)在FormData中;使用@RequestBody:Content-Type為application/json,參數(shù)在Request PayLoad中

  • 可以使用多個(gè)@RequestParam獲取數(shù)據(jù);@RequestBody不能在同一個(gè)方法中出現(xiàn)多次

以上是“springmvc參數(shù)為對(duì)象和數(shù)組的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI