SpringBoot中的PUT和Delete請(qǐng)求使用
PUT和Delete請(qǐng)求使用
在Form表單中,只支持get和post方式,而為了實(shí)現(xiàn)put方式
我們可以通過(guò)如下三個(gè)步驟實(shí)現(xiàn)
1)SpringMVC中配置HiddenHttpMethodFilter
2)頁(yè)面創(chuàng)建一個(gè)post表單
3)創(chuàng)建一個(gè)input項(xiàng),name="_method",值就是指定的請(qǐng)求方式
其中在HiddenHttpMethodFilter類(lèi)中

獲取"_method"的值,得到新的請(qǐng)求方式。

<input type="hidden" name="_method" value="put" th:if="${employee!=null}"/>
其中th標(biāo)簽是thymeleaf模板,表示只有當(dāng)employee不為空時(shí)才生效,而value中的put不區(qū)分大小寫(xiě)。
當(dāng)時(shí)在新版本的SpringBoot中,這個(gè)put請(qǐng)求不發(fā)生作用。原因是因?yàn)閟pringboot自動(dòng)配置,幫我們省略了第一步的配置,上面代碼方法就是為了實(shí)現(xiàn)自動(dòng)配置,但是因?yàn)樽⒔釦ConditionalOnProperty限制了自動(dòng)配置,默認(rèn)false不開(kāi)啟配置,所以頁(yè)面的put提交無(wú)法使用。
解決辦法
properties配置文件中配置,使之開(kāi)啟自動(dòng)配置: spring.mvc.hiddenmethod.filter.enabled=true。
此外,DELETE請(qǐng)求也可以同樣這樣設(shè)置。
<form th:action="@{/emp/}+${emp.id}" method="post">
<input type="hidden" name="_method" value="delete"/>
<button type="submit" class="btn btn-sm btn-danger" > 刪除</button>
</form>
如何支持put/delete請(qǐng)求
學(xué)過(guò)mvc的都知道,想要支持這兩種特殊的請(qǐng)求,首先就要在web.xml中配置下面的過(guò)濾器:
<!--增加一個(gè)HiddenHttpMethodFilter過(guò)濾器:目的是給普通瀏覽器 增加put|delete請(qǐng)求方式--> ? ? <filter> ? ? ? ? <filter-name>HiddenHttpMethodFilter</filter-name> ? ? ? ? <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> ? ? </filter> ? ? <filter-mapping> ? ? ? ? <filter-name>HiddenHttpMethodFilter</filter-name> ? ? ? ? <url-pattern>/*</url-pattern> ? ? </filter-mapping>
而SpringBoot就沒(méi)有這么麻煩了,因?yàn)樗呀?jīng)默認(rèn)幫我們把HiddenHttpMethodFilter納入到IOC容器中了,所以他的使用及其簡(jiǎn)單:
1.在application.properties中配置
#開(kāi)啟支持put delete請(qǐng)求的過(guò)濾器 spring.mvc.hiddenmethod.filter.enabled=true
2.使用時(shí)依舊和springmvc一樣
只需要在post請(qǐng)求方式的form表單中加入下面的隱藏域:
? ? ?<!--http請(qǐng)求方式--> ? ? ?<form action="..." ?method="post"> ? ? ??? ?<input type="hidden" name="_method" value="put" /> ? ? ??? ?<!--value值改成delete 請(qǐng)求方式就為delete了--> ? ? ?</form>
注意上面隱藏域的name必須為 “_method”,如果想要修改,則需要給IOC加入下面的bean:
@Bean
public HiddenHttpMethodFilter hiddenHttpMethodFilter(){
?? ?HiddenHttpMethodFilter methodFilter = new HiddenHttpMethodFilter();
?? ?methodFilter.setMethodParam("_m");//將隱藏域 _method --> _m
?? ?return methodFilter;
}?以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud Config RSA簡(jiǎn)介及使用RSA加密配置文件的方法
Spring Cloud 為開(kāi)發(fā)人員提供了一系列的工具來(lái)快速構(gòu)建分布式系統(tǒng)的通用模型 。本文重點(diǎn)給大家介紹Spring Cloud Config RSA簡(jiǎn)介及使用RSA加密配置文件的方法,感興趣的朋友跟隨腳步之家小編一起學(xué)習(xí)吧2018-05-05
SpringMVC+Mybatis實(shí)現(xiàn)的Mysql分頁(yè)數(shù)據(jù)查詢(xún)的示例
本篇文章主要介紹了SpringMVC+Mybatis實(shí)現(xiàn)的Mysql分頁(yè)數(shù)據(jù)查詢(xún)的示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
SpringBoot利用ThreadPoolTaskExecutor批量插入百萬(wàn)級(jí)數(shù)據(jù)的具體實(shí)現(xiàn)
ThreadPoolTaskExecutor是Spring提供的任務(wù)執(zhí)行器實(shí)現(xiàn)之一,允許開(kāi)發(fā)者配置線(xiàn)程池參數(shù)以適應(yīng)不同的應(yīng)用場(chǎng)景,創(chuàng)建 ThreadPoolTaskExecutor 實(shí)例并設(shè)置核心和最大線(xiàn)程數(shù)等屬性可以?xún)?yōu)化性能,本文介紹了SpringBoot利用ThreadPoolTaskExecutor批量插入百萬(wàn)級(jí)數(shù)據(jù)的具體實(shí)現(xiàn)2024-12-12
詳解Spring Boot微服務(wù)如何集成fescar解決分布式事務(wù)問(wèn)題
這篇文章主要介紹了詳解Spring Boot微服務(wù)如何集成fescar解決分布式事務(wù)問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
spring AOP的After增強(qiáng)實(shí)現(xiàn)方法實(shí)例分析
這篇文章主要介紹了spring AOP的After增強(qiáng)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了spring面向切面AOP的After增強(qiáng)實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2020-01-01
MyBatis-Plus 分頁(yè)查詢(xún)以及自定義sql分頁(yè)的實(shí)現(xiàn)
這篇文章主要介紹了MyBatis-Plus 分頁(yè)查詢(xún)以及自定義sql分頁(yè)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Mybatis使用JSONObject接收數(shù)據(jù)庫(kù)查詢(xún)的方法
這篇文章主要介紹了Mybatis使用JSONObject接收數(shù)據(jù)庫(kù)查詢(xún),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
SpringBoot日志配置SLF4J和Logback的方法實(shí)現(xiàn)
日志記錄是不可或缺的一部分,本文主要介紹了SpringBoot日志配置SLF4J和Logback的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04

