SpringMvc处理PUTDELETE请求

SpringMvc处理PUTDELETE请求,第1张

SpringMvc处理PUTDELETE请求

        我不太明白为什么网上资料对于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。

    
        FormContentFilter
        org.springframework.web.filter.FormContentFilter
    

    
        FormContentFilter
        /*
    
二、form表单活ajax方式提交

        由于form表单默认只支持GET、POST两种方式,SpringMvc提供了一个过滤器来间接实现PUT和DELETE。

2.1、配置过滤器
    
    
        HiddenHttpMethodFilter
        org.springframework.web.filter.HiddenHttpMethodFilter
    
    
        HiddenHttpMethodFilter
        /*
    
2.2、设置form表单

增加隐藏域_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直觉像是有用,最后通过翻看源码了解了其中内容。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5693243.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存