- @如RequestMapping,GetMapping,PostMapping,DeleteMapping,PutMapping
- Rest风格支持(使用HTTP请求方式动词来表示对资源的操作)
- 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户
- 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户 POST-保存用户
- 核心Filter;HiddenHttpMethodFilter
- 用法: 在表单中设置method=post,并且设置一个隐藏域 _method=put(delete)
- SpringBoot中手动开启配置
- 请求进来之后,一开始是原生的request,此时判断这个请求是否正常,并且要求是以POST方式提交,然后获取表单中隐藏域_method的值
- 在_method的值不为null且不是空字符串的前提下,将_method的值转换成大写
- 然后在确认可处理的类型中包含_method的值时,将请求重新封装成包装模式的Wrapper,可处理的类型包括PUT,DELETE,PATCH
- 实际上这个Wrapper也是实现了Request,并且重写了getMethod的方法,所以才能够以更多的方式提交
- 最后过滤器放行用Wrapper代替Request。所以后面的方法调用getMethod()方法调用的是Wrapper重写后的getMethod方法()
- 所以如果需要使用PUT或DELETE方式提交时,需要设置method为POST
- 当这个属性没有设置时,默认为false
- 此时这个功能才生效
- 以上是form表单使用各种方式提交时的设置