1.当我们 需要用到delete和put方式发送请求时,会发现请求的默认方式还是get,我们需要配置一个 hiddenHttpMethodFilter ,springboot已经默认配置好了,我们需要手动去开启.
开启方式,也可以说是使用方式
默认使用post方式,只需要在隐藏域 _method后指定是以put或者delete方式就ok
最后一步:在yml配置文件中开启hiddenHttpMethodFilter
spring:
mvc:
hiddenmethod:
filter:
enabled: true
若我们需要修改默认的 隐藏域名称 _method
方发: 通过一下方法就变成 了 _Z
package com.zwz.springbootweb.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.HiddenHttpMethodFilter;
@Configuration(proxyBeanMethods = false)
public class WebConfig {
@Bean
public HiddenHttpMethodFilter hiddenHttpMethodFilter(){
HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();
hiddenHttpMethodFilter.setMethodParam("_Z");
return hiddenHttpMethodFilter;
}
}
Rest原理:
表单提交会带上_method=PUT,请求过来被 HiddenHttpMethodFilter拦截,检查请求是否正常,并且是POST
获取到_method的值(兼容以下请求:PUT.DELETE.PATCH)
原生request(post),包装模式requesWrapper重写了getMethod方法,返回的是传入的值。
过滤器链放行的时候用wrapper。以后的方法调用getMethod是调用requesWrapper
若在客户端比如安卓开发不需要用 HiddenHttpMethodFilter,直接用原生servelt掉对应方法