我不太明白为什么网上资料对于springmvc如何处理put、delete请求,都是通过在form表单中添加隐藏域_method方式。通过postman,curl是可以发送put,delete请求,但在后端是无法获取到值的。
一、Postman方式提交正常创建一个springmvc工程,这里不再介绍,可以参考我之前写的博客。创建一个控制器方法,声明式put方式:
@RequestMapping(value = "/user", method = RequestMethod.PUT, produces = APPLICATION_JSON_UTF8_VALUE) @ResponseBody public String user(User user) { System.out.println(user); return JSONObject.toJSonString(user); }
如果不对springmvc进行配置,上面参数user获取到的值是null,这里需要配置一个过滤器,我这里用的spring版本是5.3.12。
二、form表单活ajax方式提交FormContentFilter org.springframework.web.filter.FormContentFilter FormContentFilter /*
由于form表单默认只支持GET、POST两种方式,SpringMvc提供了一个过滤器来间接实现PUT和DELETE。
2.1、配置过滤器2.2、设置form表单HiddenHttpMethodFilter org.springframework.web.filter.HiddenHttpMethodFilter HiddenHttpMethodFilter /*
增加隐藏域_method,value就是要支持的PUT、DELETE
2.3、请求处理@RequestMapping(value = "/user", method = RequestMethod.PUT) public String updateUser(String username, String password) { System.out.println("update user:"+username+",password:"+password); return "success"; }三、springboot中put处理
springboot在底层进行了自动装配,所以不需要开发人员再进行配置,这就是springboot强大之处,具体实现如下:
四、总结一个小问题,困惑了很久也搜了很久,都没能找到最理想的结果,最后从一个网页中找到了HttpPutFormContentFilter直觉像是有用,最后通过翻看源码了解了其中内容。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)