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

SpringBoot2之PUT請求接收不了參數(shù)的解決方案

 更新時間:2022年07月01日 10:10:50   作者:Moshow鄭鍇  
這篇文章主要介紹了SpringBoot2之PUT請求接收不了參數(shù)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot2之PUT請求接收不了參數(shù)的解決辦法,這個問題,關(guān)乎兩個Filter過濾器,是spring3和3.5之后提供的,目的就是解決RESTful中PUT請求或者其他請求的問題。

下面請看詳細內(nèi)容

HiddenHttpMethodFilter

html中form表單只支持GET與POST請求,而DELETE、PUT等method并不支持,spring3添加了一個過濾器,可以將這些請求轉(zhuǎn)換為標準的http方法,使得支持GET、POST、PUT與DELETE請求。

    @Bean
    public FilterRegistrationBean<HiddenHttpMethodFilter> testFilterRegistration3() {
        FilterRegistrationBean<HiddenHttpMethodFilter> registration = new FilterRegistrationBean<HiddenHttpMethodFilter>();
        registration.setFilter(new HiddenHttpMethodFilter());//添加過濾器
        registration.addUrlPatterns("/*");//設(shè)置過濾路徑,/*所有路徑
        registration.setName("HiddenHttpMethodFilter");//設(shè)置優(yōu)先級
        registration.setOrder(2);//設(shè)置優(yōu)先級
        return registration;
    }

在頁面的form表單中設(shè)置method為Post,并添加一個如下的隱藏域:

<input type="hidden" name="_method" value="put" />

查看HiddenHttpMethodFilter源碼

        String paramValue = request.getParameter(methodParam);  
        if("POST".equals(request.getMethod()) && StringUtils.hasLength(paramValue)) {  
            String method = paramValue.toUpperCase(Locale.ENGLISH);  
            HttpServletRequest wrapper = new HttpMethodRequestWrapper(request, method); 
            filterChain.doFilter(wrapper, response);  
        } else  
        {  
            filterChain.doFilter(request, response);  
        }  
}  

 由源碼可以看出,filter只對Post方法進行過濾,且需要添加參數(shù)名為_method的隱藏域,也可以設(shè)置其他參數(shù)名,比如想設(shè)置為_method_,可以在HiddenHttpMethodFilter配置類中設(shè)置初始化參數(shù):put (methodParam,"_method_") 

HttpPutFormContentFilter

由HiddenHttpMethodFilter可知,html中的form的method值只能為post或get,我們可以通過HiddenHttpMethodFilter獲取put表單中的參數(shù)鍵值對,而在Spring3中獲取put表單的參數(shù)鍵值對還有另一種方法,即使用HttpPutFormContentFilter過濾器。

    @Bean
    public FilterRegistrationBean<HttpPutFormContentFilter> testFilterRegistration2() {
        FilterRegistrationBean<HttpPutFormContentFilter> registration = new FilterRegistrationBean<HttpPutFormContentFilter>();
        registration.setFilter(new HttpPutFormContentFilter());//添加過濾器
        registration.addUrlPatterns("/*");//設(shè)置過濾路徑,/*所有路徑
        registration.setName("HttpPutFormContentFilter");//設(shè)置優(yōu)先級
        registration.setOrder(2);//設(shè)置優(yōu)先級
        return registration;
    }

HttpPutFormContentFilter過濾器的作為就是獲取put表單的值,并將之傳遞到Controller中標注了method為RequestMethod.put的方法中。

與HiddenHttpMethodFilter不同,在form中不用添加參數(shù)名為_method的隱藏域,且method不必是post,直接寫成put,但該過濾器只能接受enctype值為application/x-www-form-urlencoded的表單,也就是說,在使用該過濾器時,form表單的代碼必須如下:

<form action="" method="put" enctype="application/x-www-form-urlencoded">  
    ......  
</form>  

另外,經(jīng)過測試,json數(shù)據(jù)也是ok的,enctype=”application/json”也是ok的

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

相關(guān)文章

  • Spring Boot利用Docker快速部署項目的完整步驟

    Spring Boot利用Docker快速部署項目的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot利用Docker快速部署項目的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 詳解Spring Boot Web項目之參數(shù)綁定

    詳解Spring Boot Web項目之參數(shù)綁定

    本篇文章主要介紹了詳解Spring Boot Web項目之參數(shù)綁定,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Springboot FatJa原理機制源碼解析

    Springboot FatJa原理機制源碼解析

    這篇文章主要為大家介紹了Springboot FatJa原理機制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • SpringMvc獲取頁面中的參數(shù)方法詳解

    SpringMvc獲取頁面中的參數(shù)方法詳解

    這篇文章主要介紹了SpringMvc獲取頁面中的參數(shù)方法詳解,獲取頁面的參數(shù)通常都是讓類實現(xiàn)設(shè)置HttpServletRequest request接口然后重寫接口中的方法的辦法來得到參數(shù),但是在Springmvc中有其他的獲取方法,需要的朋友可以參考下
    2023-10-10
  • Spring?代理?Bean?獲取不到原始?Bean?對象注解解決方法

    Spring?代理?Bean?獲取不到原始?Bean?對象注解解決方法

    這篇文章主要介紹了Spring?代理?Bean?獲取不到原始?Bean?對象注解解決方法,文章圍繞主題相關(guān)資料展開詳細介紹,需要的小伙伴可以參考一下
    2022-04-04
  • Spring3?中?RabbitMQ?的使用與常見場景分析

    Spring3?中?RabbitMQ?的使用與常見場景分析

    本文介紹了Spring3中RabbitMQ的使用,涵蓋了RabbitMQ的基本知識、五種模式、數(shù)據(jù)隔離、消費者確認、死信交換機、延遲功能、消息堆積解決方法、高可用性以及消息重復(fù)消費問題的解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • Mybatis中resultMap的Colum和property屬性詳解

    Mybatis中resultMap的Colum和property屬性詳解

    這篇文章主要介紹了Mybatis中resultMap的Colum和property屬性,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • Java單測void類型的方法詳解

    Java單測void類型的方法詳解

    這篇文章主要給大家介紹了Java中單測void類型的方法,文中給出了詳細的示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,需要的朋友可以跟著小編下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • Java并發(fā)控制機制詳解

    Java并發(fā)控制機制詳解

    這篇文章主要為大家詳細介紹了Java并發(fā)控制機制,什么是Java并發(fā)控制機制,Java并發(fā)控制機制的作用,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 聊一聊jdk1.8中的ArrayList 底層數(shù)組是如何擴容的

    聊一聊jdk1.8中的ArrayList 底層數(shù)組是如何擴容的

    這篇文章主要介紹了聊一聊jdk1.8中的ArrayList 底層數(shù)組是如何擴容的,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

汶上县| 灵丘县| 中阳县| 体育| 克山县| 贺兰县| 上林县| 南开区| 太谷县| 闽清县| 苍梧县| 西乡县| 双城市| 咸阳市| 南和县| 广河县| 娄烦县| 巫山县| 筠连县| 牟定县| 资中县| 叙永县| 柘荣县| 稻城县| 满城县| 水富县| 开江县| 德安县| 襄城县| 中阳县| 沐川县| 六安市| 封丘县| 义马市| 西贡区| 镇康县| 剑川县| 南陵县| 晋城| 清新县| 台前县|