当前位置: 首页 > news >正文

27、请求处理-【源码分析】-怎么改变默认的_method

27、请求处理-【源码分析】-怎么改变默认的_method

要改变 Spring Boot 中默认的 `_method` 参数,可以通过以下步骤实现:

#### 原理分析

Spring Boot 中默认的 `HiddenHttpMethodFilter` 用于将表单中的 `_method` 参数值映射为实际的 HTTP 方法(如 PUT、DELETE 等),以便支持 RESTful 风格的请求。

#### 修改默认 `_method` 参数

1. **自定义 `HiddenHttpMethodFilter`**

   

   - 创建一个配置类,自定义 `HiddenHttpMethodFilter` Bean。

   

   ```java

   @Configuration

   public class WebConfig {

   

       @Bean

       public HiddenHttpMethodFilter hiddenHttpMethodFilter() {

           HiddenHttpMethodFilter filter = new HiddenHttpMethodFilter();

           filter.setMethodParam("_m"); // 将默认的 _method 修改为 _m

           return filter;

       }

   }

   ```

   

2. **修改表单**

   

   - 在表单中,将原先的 `_method` 隐藏域名称修改为 `_m`。

   

   ```html

   <form action="/user" method="post">

       <input name="_m" type="hidden" value="DELETE" />

       <input type="submit" value="REST-DELETE 提交" />

   </form>

   ```

#### 原理说明

- **`@ConditionalOnMissingBean(HiddenHttpMethodFilter.class)`**

  

  - `WebMvcAutoConfiguration` 类中,默认的 `HiddenHttpMethodFilter` Bean 是在没有用户自定义该 Bean 时才会被创建。

  

- **自定义 Bean 生效**

  

  - 通过自定义 `HiddenHttpMethodFilter` Bean 并设置 `setMethodParam` 方法,覆盖了默认的配置,从而改变了 `_method` 参数的默认值。

---

通过以上步骤,成功将 Spring Boot 中默认的 `_method` 参数修改为 `_m`,实现了自定义请求方法参数的功能。

http://www.xdnf.cn/news/691471.html

相关文章:

  • 【周输入】517周阅读推荐-3
  • Spring Boot 启动流程深度解析:从源码到实践
  • 【烧脑算法】定长滑动窗口:算法题中的“窗口”智慧
  • MySQL OCP 与 Oracle OCP 认证,怎么选?
  • 怎样将win11+ubuntu双系统的ubuntu从机械硬盘迁移至固态硬盘(1)
  • 【Elasticsearch】track_total_hits
  • CAD图纸中的文字看不到,这是什么原因?
  • 传输线的特性阻抗和传播延迟
  • DL00916-基于深度学习的金枪鱼各类别目标检测含完整数据集
  • 131.在 Vue3 中使用 OpenLayers 测量长度和面积,并支持 modifyend 动态更新数值
  • 不打架的协议互通,modbus转profibus网关的总线的高效互通方案
  • C53-字符串引入和注意事项.
  • JavaScript 中 this 指向全解析:从基础到 Vue 应用
  • 【加密算法】
  • Qt/C++开发监控GB28181系统/sip协议/同时支持udp和tcp模式/底层协议解析
  • 【Microsoft 365可用】PPT一键取消所有超链接
  • Python 进阶【二】:多进程编程
  • TCP三次握手/四次握手-TCP/IP四层模型-SSL/TLS-HTTP-HTTPS
  • Bootstrap法进行随机模拟
  • 第11章:工程组织与系列总结
  • 8086 处理器寄存器超详细解析:从原理到实战
  • 三分钟打通Stable Diffusion提示词(附实战手册)
  • TDengine 运维——用户和权限
  • Agent 的7 中设计模式
  • 4.Consul服务注册与发现
  • 【深度学习】10. 深度推理(含链式法则详解)RNN, LSTM, GRU,VQA
  • 33.第二阶段x64游戏实战-InLineHook
  • Jmeter——JDBC连接数据库相关
  • 【vscode】切换英文字母大小写快捷键如何配置
  • 《Google I/O 2025:AI浪潮下的科技革新风暴》