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

SpringMVC之@requestBody的作用及說明

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

@requestBody的作用及說明

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

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

2、通過@requestBody可以將請(qǐng)求體中的JSON字符串綁定到相應(yīng)的bean上,當(dāng)然也可以將其分別綁定到對(duì)應(yīng)的字符串上。    

例如說以下情況:

$.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字符串中的兩個(gè)變量的值分別賦予了兩個(gè)字符串,但是呢假如我有一個(gè)User類,擁有如下字段:      

String userName;  
String pwd;   

那么上述參數(shù)可以改為以下形式:@requestBody User user 這種形式會(huì)將JSON字符串中的值賦予user中對(duì)應(yīng)的屬性上    

需要注意的是,JSON字符串中的key必須對(duì)應(yīng)user中的屬性名,否則是請(qǐng)求不過去的。 

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

作用:     

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

使用時(shí)機(jī):

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

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

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

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

使用@RequestBody瀏覽器報(bào)415錯(cuò)誤

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

解決方式

1。在項(xiàng)目中導(dǎo)入兩個(gè)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/>

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

? ? <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的報(bào)錯(cuò)。

附上我的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";
? ? }
}

總結(jié)  

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

相關(guān)文章

  • java實(shí)現(xiàn)點(diǎn)贊功能

    java實(shí)現(xiàn)點(diǎn)贊功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)點(diǎn)贊功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 如何使用Gradle實(shí)現(xiàn)類似Maven的profiles功能

    如何使用Gradle實(shí)現(xiàn)類似Maven的profiles功能

    這篇文章主要介紹了如何使用Gradle實(shí)現(xiàn)類似Maven的profiles功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • icePDF去水印的方法(推薦)

    icePDF去水印的方法(推薦)

    下面小編就為大家?guī)硪黄猧cePDF去水印的方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • java == 引發(fā)的線上異常詳解

    java == 引發(fā)的線上異常詳解

    這篇文章主要介紹了java == 引發(fā)的線上異常,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Spring Boot訪問靜態(tài)資源css/js,你真的懂了嗎

    Spring Boot訪問靜態(tài)資源css/js,你真的懂了嗎

    在搭建springboot時(shí)經(jīng)常需要在html中訪問一些靜態(tài)資源,很多朋友不清楚如何在 Spring Boot中訪問靜態(tài)資源,本文給大家?guī)韮煞N解決方案,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • spring boot配置ssl實(shí)現(xiàn)HTTPS的方法

    spring boot配置ssl實(shí)現(xiàn)HTTPS的方法

    這篇文章主要介紹了spring boot配置ssl實(shí)現(xiàn)HTTPS的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • springboot中設(shè)置定時(shí)任務(wù)的三種方法小結(jié)

    springboot中設(shè)置定時(shí)任務(wù)的三種方法小結(jié)

    在我們開發(fā)項(xiàng)目過程中,經(jīng)常需要定時(shí)任務(wù)來幫助我們來做一些內(nèi)容,本文介紹了springboot中設(shè)置定時(shí)任務(wù)的三種方法,主要包括@Scheduled注解,Quartz框架和xxl-job框架的實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • java操作xml的方法匯總及解析

    java操作xml的方法匯總及解析

    這篇文章主要介紹了java操作xml的方法匯總及解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java源碼解析HashMap的tableSizeFor函數(shù)

    Java源碼解析HashMap的tableSizeFor函數(shù)

    今天小編就為大家分享一篇關(guān)于Java源碼解析HashMap的tableSizeFor函數(shù),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • java正則表達(dá)式實(shí)現(xiàn)提取需要的字符并放入數(shù)組【ArrayList數(shù)組去重復(fù)功能】

    java正則表達(dá)式實(shí)現(xiàn)提取需要的字符并放入數(shù)組【ArrayList數(shù)組去重復(fù)功能】

    這篇文章主要介紹了java正則表達(dá)式實(shí)現(xiàn)提取需要的字符并放入數(shù)組,即基于正則的ArrayList數(shù)組去重復(fù)功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01

最新評(píng)論

获嘉县| 灵丘县| 调兵山市| 昔阳县| 鹤岗市| 墨玉县| 内黄县| 宜君县| 颍上县| 武川县| 盐津县| 沈阳市| 常山县| 武义县| 浙江省| 依安县| 张家口市| 安康市| 柯坪县| 济源市| 科技| 芜湖县| 佛坪县| 囊谦县| 池州市| 建昌县| 莎车县| 平定县| 乐昌市| 庆云县| 陈巴尔虎旗| 齐齐哈尔市| 普洱| 奎屯市| 吴川市| 麦盖提县| 乌拉特中旗| 卓尼县| 巫溪县| 梅河口市| 临沂市|