亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringMVC之@requestBody的作用及說明

 更新時間:2023年04月10日 14:41:06   作者:云和數據張老師  
這篇文章主要介紹了SpringMVC之@requestBody的作用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@requestBody的作用及說明

1、@requestBody注解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。

一般情況下來說常用其來處理application/json類型?! ?/p>

2、通過@requestBody可以將請求體中的JSON字符串綁定到相應的bean上,當然也可以將其分別綁定到對應的字符串上?!   ?/p>

例如說以下情況:

$.ajax({       
? ? ? ?  url:"/login",       
? ? ? ?  type:"POST",        
? ? ? ? ? data:'{"userName":"admin","pwd","admin123"}',      
? ? ?   content-type:"application/json charset=utf-8",        
? ? ? ? ? success:function(data)
? ? ? ? ? ? ?{          
? ? ? ? ? ? ? ? alert("request success ! ");       
? ? ? ? ? ? }    
});
 @requestMapping("/login")    
? public void login(@requestBody String userName,@requestBody String pwd){      
? System.out.println(userName+" :"+pwd);    
}

這種情況是將JSON字符串中的兩個變量的值分別賦予了兩個字符串,但是呢假如我有一個User類,擁有如下字段:      

String userName;  
String pwd;   

那么上述參數可以改為以下形式:@requestBody User user 這種形式會將JSON字符串中的值賦予user中對應的屬性上    

需要注意的是,JSON字符串中的key必須對應user中的屬性名,否則是請求不過去的?!?/p>

3、在一些特殊情況@requestBody也可以用來處理content-type類型為application/x-www-form-urlcoded的內容,只不過這種方式不是很常用,在處理這類請求的時候,@requestBody會將處理結果放到一個MultiValueMap<String,String>中,這種情況一般在特殊情況下才會使用,例如jQuery easyUI的datagrid請求數據的時候需要使用到這種方式、小型項目只創(chuàng)建一個POJO類的話也可以使用這種接受方式。

作用:     

  • i) 該注解用于讀取Request請求的body部分數據,使用系統(tǒng)默認配置的HttpMessageConverter進行解析,然后把相應的數據綁定到要返回的對象上;     
  • ii) 再把HttpMessageConverter返回的對象數據綁定到 controller中方法的參數上。

使用時機:

A) GET、POST方式提時, 根據request header Content-Type的值來判斷:   

  • application/x-www-form-urlencoded, 可選(即非必須,因為這種情況的數據@RequestParam, @ModelAttribute也可以處理,當然@RequestBody也能處理);   
  • multipart/form-data, 不能處理(即使用@RequestBody不能處理這種格式的數據);   
  • 其他格式, 必須(其他格式包括application/json, application/xml等。這些格式的數據,必須使用@RequestBody來處理); 

B) PUT方式提交時, 根據request header Content-Type的值來判斷:   

  • application/x-www-form-urlencoded, 必須;   
  • multipart/form-data, 不能處理;   
  • 其他格式, 必須;
  • 說明:request的body部分的數據編碼格式由header部分的Content-Type指定;

使用@RequestBody瀏覽器報415錯誤

最近在寫一個前后端分離項目,前后端數據交互都使用json的格式,在使用SpringMVC的@RequestBody時,一直報415的錯誤,意思就是后臺無法處理content-type=application/json格式的數據,我后臺已經使用@RequestBody,就是不行,但是如果參數類型為String就可以接收,實體類的就是不行,看了很多教程,沖浪了一天,終于找到了解決方案。

解決方式

1。在項目中導入兩個jar包

? ? <dependency>
? ? ? <groupId>org.codehaus.jackson</groupId>
? ? ? <artifactId>jackson-mapper-asl</artifactId>
? ? ? <version>1.9.13</version>
? ? </dependency>
?
? ? <dependency>
? ? ? <groupId>org.codehaus.jackson</groupId>
? ? ? <artifactId>jackson-core-asl</artifactId>
? ? ? <version>1.9.13</version>
? ? </dependency>

2.在app-servlet.xml(你的springmvc配置文件),加入一行配置 

<mvc:annotation-driven/>

或者配置一個適配器(兩種方式選一個即可,我是使用的上面的方式)

? ? <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
? ? ? ? <property name="messageConverters">
? ? ? ? ? ? <list>
? ? ? ? ? ? ? ? <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
? ? ? ? ? ? </list>
? ? ? ? </property>
? ? </bean>

這樣就解決了415的報錯。

附上我的controller層的代碼。

@RestController
@CrossOrigin
public class LoginController {
? ? @PostMapping("/loginPost")
? ? public String loginPost(@RequestBody User user,@RequestHeader HttpHeaders header){
? ? ? ? System.out.println(header.getContentType());
? ? ? ? System.out.println(user.getName());
? ? ? ? System.out.println(user.getPassword());
? ? ? ? return "success";
? ? }
}

總結  

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

相關文章

  • springboot啟動掃描不到dao層接口的解決方案

    springboot啟動掃描不到dao層接口的解決方案

    這篇文章主要介紹了springboot啟動掃描不到dao層接口的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • zuul轉發(fā)后服務取不到請求路徑的解決

    zuul轉發(fā)后服務取不到請求路徑的解決

    這篇文章主要介紹了zuul轉發(fā)后服務取不到請求路徑的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java多線程 Producer and Consumer設計模式

    Java多線程 Producer and Consumer設計模式

    這篇文章主要介紹了Java多線程 Producer and Consumer設計模式,producer是生產者的意思:指生產數據的線程,consumer是消費者的意思,指的是使用數據的線程,下文圍繞Producer及Consumer展開話題,需要的朋友可以參考一下
    2021-10-10
  • Java1.8中StringJoiner的使用及源碼詳析

    Java1.8中StringJoiner的使用及源碼詳析

    在看String類時,看到有使用StringJoiner類,所以順便看了下StringJoiner類,下面這篇文章主要給大家介紹了關于Java 1.8中StringJoiner的使用及源碼分析的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-08-08
  • 最值得Java開發(fā)者收藏的網站

    最值得Java開發(fā)者收藏的網站

    這篇文章主要為大家分享了最值得Java開發(fā)者收藏的11個網站,幫助Java開發(fā)者提升編程能力
    2016-11-11
  • 自定義對象作為HashMap的Key問題

    自定義對象作為HashMap的Key問題

    這篇文章主要介紹了自定義對象作為HashMap的Key問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 關于java中線程安全問題詳解

    關于java中線程安全問題詳解

    最近工作中遇到不少多線程問題,但自己一直對多線程的理解比較表層,所以深入研究了一番,下面這篇文章主要給大家介紹了關于java中線程安全問題的相關資料,需要的朋友可以參考下
    2021-11-11
  • Java實現解析并生成xml原理實例詳解

    Java實現解析并生成xml原理實例詳解

    這篇文章主要介紹了Java實現解析并生成xml原理實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • java與scala數組及集合的基本操作對比

    java與scala數組及集合的基本操作對比

    這篇文章主要介紹了java與scala數組及集合的基本操作對比,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring事務處理原理步驟詳解

    Spring事務處理原理步驟詳解

    這篇文章主要介紹了Spring事務處理原理步驟詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03

最新評論