springmvc中配置RESTful风格控制器
一般的http请求中其实只需要get和post就可以满足项目需求了,而为什么还要使用restful可能就是为了使请求url看起来更加直观,好看吧。。
restful常用的请求方式:get,post,put,patch,delete
springmvc默认情况下对get和post支持的最好,像put,putch,delete其实也是支持的,只不过默认情况下只支持控制器接收url传递的参数,如果我们想要想post那样传递参数,需要我们在后端和前端做一些设置,比如在前端请求时手动设置请求头中的内容类型为json,后端还要配合前端设置控制器的参数接收一个请求体,而不是普通表单或url参数,使用requestBody注解来接收,springmvc会通过消息处理器来帮助json格式的请求体到java bean的转换,格外的麻烦,所以以下提供三种解决方案:
1、修改tomcat的server.xml:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" parseBodyMethods="POST,PUT,DELETE" URIEncoding="UTF-8" />
经过测试这种是可行的,只是ajax请求时需要设置请求头为
Content-Type: application/x-www-form-urlencoded
请求数据的内容格式是这样name=bbba&age=22
如果表单提交的话只需要设置请求编码application/x-www-form-urlencoded即可。
2、在web.xml中添加HttpPutFormContentFilter
参考 https://blog.csdn.net/geloin/article/details/7444590
3、在web.xml中添加HiddenHttpMethodFilter
参考 https://blog.csdn.net/geloin/article/details/7444321
我比较推荐使用第3中解决方案,没有原因,个人喜好。。