91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringMVC之@requestBody的作用是什么

發布時間:2023-04-10 15:54:16 來源:億速云 閱讀:94 作者:iii 欄目:開發技術

這篇文章主要介紹“SpringMVC之@requestBody的作用是什么”,在日常操作中,相信很多人在SpringMVC之@requestBody的作用是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SpringMVC之@requestBody的作用是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    @requestBody的作用及說明

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

    一般情況下來說常用其來處理application/json類型。  

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

    例如說以下情況:

    $.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中的屬性名,否則是請求不過去的。 

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

    作用:     

    • i) 該注解用于讀取Request請求的body部分數據,使用系統默認配置的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";
        }
    }

    到此,關于“SpringMVC之@requestBody的作用是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    连南| 定远县| 金华市| 安岳县| 永德县| 夏河县| 密云县| 奎屯市| 天峻县| 海南省| 平度市| 准格尔旗| 贵南县| 宜宾市| 滨海县| 康保县| 石渠县| 友谊县| 吴川市| 彩票| 利津县| 攀枝花市| 务川| 汾西县| 武汉市| 榕江县| 清镇市| 弥渡县| 儋州市| 双峰县| 娄底市| 上饶市| 巴林右旗| 乌审旗| 游戏| 报价| 湘阴县| 繁昌县| 台南市| 宁南县| 烟台市|