Spring MVC解决PUT/DELETE无法接收参数的问题
一半有转载的意思,但是看了很多博客才最终解决这个问题,还是把要点提出来
起因:MVC自带只能支持GET/POST请求来接收参数
解决:
spring 3以后支持将PUT/DELETE等请求方式过滤成GET/POST的请求方式
划重点
1.spring 3
2.Content-Type:application/x-www-form-urlencoded
3.web.xml 以下为配置文件
<!--handler PUT/DELETE--> <filter> <filter-name>HttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
具体怎么请求呢,就是请求方式改为POST请求
请求成功,完成参数的绑定
这次折腾,发现了新的好用的注解
@ModelAttribute
例如下面这种带多个参数的Controller请求,当正好有参数是一个对象时,不加这个注解是无法自动映射成功的,
关于这个注解使用方法还有很多,详细的可以看看
https://www.jianshu.com/p/cf9acf314a4c?utm_source=oschina-app
讲的比较仔细
@PutMapping(value = "info/{id}") @ResponseBody public ServerResponse updatePersonalInfo(@PathVariable(value = "id") String id,@ModelAttribute ReceiveUserInfoVO userInfo) throws IOException { return personalInfoService.updatePersonalInfo(userInfo); }