SpringBoot中的PUT和Delete请求使用
作者:is.lizhichao 发布时间:2022-01-22 19:33:32
PUT和Delete请求使用
在Form表单中,只支持get和post方式,而为了实现put方式
我们可以通过如下三个步骤实现
1)SpringMVC中配置HiddenHttpMethodFilter
2)页面创建一个post表单
3)创建一个input项,name="_method",值就是指定的请求方式
其中在HiddenHttpMethodFilter类中
获取"_method"的值,得到新的请求方式。
<input type="hidden" name="_method" value="put" th:if="${employee!=null}"/>
其中th标签是thymeleaf模板,表示只有当employee不为空时才生效,而value中的put不区分大小写。
当时在新版本的SpringBoot中,这个put请求不发生作用。原因是因为springboot自动配置,帮我们省略了第一步的配置,上面代码方法就是为了实现自动配置,但是因为注解@ConditionalOnProperty限制了自动配置,默认false不开启配置,所以页面的put提交无法使用。
解决办法
properties配置文件中配置,使之开启自动配置: spring.mvc.hiddenmethod.filter.enabled=true。
此外,DELETE请求也可以同样这样设置。
<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请求
学过mvc的都知道,想要支持这两种特殊的请求,首先就要在web.xml中配置下面的过滤器:
<!--增加一个HiddenHttpMethodFilter过滤器:目的是给普通浏览器 增加put|delete请求方式-->
<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就没有这么麻烦了,因为他已经默认帮我们把HiddenHttpMethodFilter纳入到IOC容器中了,所以他的使用及其简单:
1.在application.properties中配置
#开启支持put delete请求的过滤器
spring.mvc.hiddenmethod.filter.enabled=true
2.使用时依旧和springmvc一样
只需要在post请求方式的form表单中加入下面的隐藏域:
<!--http请求方式-->
<form action="..." method="post">
<input type="hidden" name="_method" value="put" />
<!--value值改成delete 请求方式就为delete了-->
</form>
注意上面隐藏域的name必须为 “_method”,如果想要修改,则需要给IOC加入下面的bean:
@Bean
public HiddenHttpMethodFilter hiddenHttpMethodFilter(){
HiddenHttpMethodFilter methodFilter = new HiddenHttpMethodFilter();
methodFilter.setMethodParam("_m");//将隐藏域 _method --> _m
return methodFilter;
}
来源:https://blog.csdn.net/sinat_41258771/article/details/104256647


猜你喜欢
- 配置文件中设置通常在公司级别的项目中,我们可能会写多个application- dev/prod.yml ,然后我们通常会在applicat
- 我们常常需要对数据进行查找,修改,查找数据有许多方法,我们先看看最简单的顺序查找int main(){int i, k = 0;scanf(
- 各种手机助手里面都包含了短信备份这一项。短信的本分主要包含四项:内容body、事件date、方式type、号码address。短信备份~一。
- 本文研究的主要是Java ArrayList扩容问题实例详解的相关内容,具体介绍如下。首先我们需要知道ArrayList里面的实质的其实是一
- 1、使用pom安装依赖<dependency> <groupId>com.alibaba&
- 前言目前主流的锁有两种,一种是synchronized,另一种就是ReentrantLock,JDK优化到现在目前为止synchronize
- 今天我们来看一下在C#中对象序列化XML的方法。不得不说,在这个Json横行的年代,XML虽然式微,但也的确是一股子清流。(个人感觉)不多说
- 背景数据库在保存数据时,对于某些敏感数据需要脱敏或者加密处理,如果一个一个的去加显然工作量大而且容易出错,这个时候可以考虑使用 * ,本文针
- Fragment是Android honeycomb 3.0开始新增的概念,Fragment名为碎片不过却和Activity十
- 这篇文章主要介绍了Java线程状态运行原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参
- 阶乘(Factorial)是个很有意思的函数,但是不少人都比较怕它,我们来看看两个与阶乘相关的问题: 1、 给定一个整数N,那么N的阶乘N!
- 本文实例讲述了Java编程实现汉字按字母顺序排序的方法。分享给大家供大家参考,具体如下:String[] str0 = new String
- 扫码抢实现读取二维码信息,本地扫码枪是外接写入设备,本质是监控读写输入,下面介绍下扫码设备读取支付二维码。1.引入扫码设备辅助类public
- java实现读取、删除文件夹下的文件package test.com;import java.io.File;import java.io.
- 前言在前后端分离开发的项目当中为了避免重复构建发布,我们需要部署一个持续发布环境,而目前的开发环境服务器都是基于 CentOS 的,因此每次
- /** * 三角数字: * 比达哥斯拉领导下的古希腊数学家发现了一个有趣的数字序列1, 3, 6, 10, 15, 21,... *
- 一、为什么需要服务网关:1、什么是服务网关:
- 一、问题背景在Intellij idea中,新建Maven项目,在魔项目中新建多个模块,发现模块间相互调用失败二、问题原因模块间无法相互引用
- 一、概述现在大多数的电商APP的详情页长得几乎都差不多,几乎都是上面一个商品的图片,当你滑动的时候,会有Tab悬浮在上面,这样做用户体验确实
- 一)Document介绍API来源:在JDK中javax.xml.*包下使用场景:1、需要知道XML文档所有结构2、需要把文档一些元素排序3