欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • List轉(zhuǎn)變?yōu)槎禾柗指舻腟tring(Java7和Java8分別實現(xiàn))

    List轉(zhuǎn)變?yōu)槎禾柗指舻腟tring(Java7和Java8分別實現(xiàn))

    這篇文章主要介紹了Java7和Java8分別實現(xiàn)List轉(zhuǎn)變?yōu)槎禾柗指舻腟tring,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 解決springcloud 配置gateway 出現(xiàn)錯誤的問題

    解決springcloud 配置gateway 出現(xiàn)錯誤的問題

    今天給大家分享springcloud 配置gateway 出現(xiàn)錯誤的問題,其實解決方法很簡單,只需要降低springcloud版本,改成Hoxton.SR5就好了,再次改成Hoxton.SR12,也不報錯了,下面給大家展示下,感興趣的朋友一起看看吧
    2021-11-11
  • Java 8 新特性終極版指南詳解

    Java 8 新特性終極版指南詳解

    Java 8已經(jīng)公布有一段時間了,種種跡象表明Java 8是一個有重大改變的發(fā)行版。本文給大家介紹Java 8 新特性終極版指南詳解,需要的朋友參考下
    2016-03-03
  • 詳解Java?redis中緩存穿透?緩存擊穿?雪崩三種現(xiàn)象以及解決方法

    詳解Java?redis中緩存穿透?緩存擊穿?雪崩三種現(xiàn)象以及解決方法

    緩存穿透是指緩存和數(shù)據(jù)庫中都沒有的數(shù)據(jù),而用戶不斷發(fā)起請求,如發(fā)起為id為“-1”的數(shù)據(jù)或id為特別大不存在的數(shù)據(jù)。這時的用戶很可能是攻擊者,攻擊會導(dǎo)致數(shù)據(jù)庫壓力過大
    2022-01-01
  • Elasticsearch查詢之Match Query示例詳解

    Elasticsearch查詢之Match Query示例詳解

    這篇文章主要為大家介紹了Elasticsearch查詢之Match查詢示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 話說Spring Security權(quán)限管理(源碼詳解)

    話說Spring Security權(quán)限管理(源碼詳解)

    本篇文章主要介紹了話說Spring Security權(quán)限管理(源碼詳解) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • SpringBoot+React實現(xiàn)計算個人所得稅

    SpringBoot+React實現(xiàn)計算個人所得稅

    本文將以個人所得稅的計算為例,使用React+SpringBoot+GcExcel來實現(xiàn)這一功能,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解下
    2023-09-09
  • java通過cglib動態(tài)生成實體bean的操作

    java通過cglib動態(tài)生成實體bean的操作

    這篇文章主要介紹了java通過cglib動態(tài)生成實體bean的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java實現(xiàn)斗地主最簡代碼實例

    Java實現(xiàn)斗地主最簡代碼實例

    在本篇文章里小編給各位分享的是關(guān)于Java實現(xiàn)斗地主最簡代碼實例,有興趣的朋友們可以參考下。
    2020-05-05
  • Java log4j詳細教程

    Java log4j詳細教程

    日志是應(yīng)用軟件中不可缺少的部分,Apache的開源項目log4j是一個功能強大的日志組件,提供方便的日志記錄。在apache網(wǎng)站:jakarta.apache.org/log4j 可以免費下載到Log4j最新版本的軟件包
    2015-11-11

最新評論