关于RESTful请求的问题
GET/POST/PUT/DELETE这四种请求分别只能严格对应查询、新增、修改、删除吗?前两种请求与前期课程中
讲到的web请求完全不同吗?
正在回答
同学,你好!非常抱歉为你带来了不好的体验!下面把你的两个疑问再整理一下:
1、关于编码的问题
虽然都是CharacterEncodingFilter类,但其实是不同的。在web部分是我们自定义的过滤器,而这里使用的是Spring中的过滤器。通过查看这个过滤器的源码,发现会对POST、PUT和DELETE请求进行了处理,并没有对GET请求进行处理,这也是因为现在基本使用Tomcat 8以上版本,因此没有对GET请求进行处理
2、关于请求的问题
浏览器表单只能发送GET和POST请求。但是除了浏览器表单,还可以通过ajax或者HttpClient等技术进行请求发送,这些都是可以发送四种请求的。
另外springMVC中,可以在web.xml中增加如下过滤器的配置,
在form表单中,增加隐藏域,设置为put或delete,如:
经过过滤器的会将post请求转换为put或delete请求。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,Restful是一种编码风格,确实Get Post Put Delete 对应 查询 新增 修改 删除。但要注意的是,这是纯粹的理论设计,是最理想的情况.。目前以Chrome为代表的浏览器,从设计之初就只支持get/post的两种请求,这是w3c的标准规定的,Chrome只是进行了实现。这也是为什么我们在学习Servlet时候,只去处理doGet/doPost的原因。如果我们的请求是来自于标准浏览器那只用对get/post进行处理。
但是,Ajax就不一样了。 Ajax的核心对象是XmlHttpRequest,这东西并不是W3C规定的标准, 同时XmlHttpRequest对象是允许发送Get/Post/Put/Delete请求的,所以在SpringMVC中我们创建了与之对应的处理办法。通过浏览器发送标准Http请求收到W3C的规定制约,只能发送get/post, 而Ajax则四种都可以 ,看起来都是在网页中提交的,其根本是完全不同的。
Restful最大的好处是只需要返回数据,因此可以用在任何客户端通信. 如果我们的客户端是Web页面,那就是用ajax , 如果是java 可以使用HttpClient或者OkHttp发送 ,如果是安卓ios也提供了发送对应Http请求的方法, 这些都是可以发送四种不同的方法的。
Servlet中除了doGet/doPost还有doPut/doDelete,只是在讲解Servlet的部分,因为浏览器不能发送put/delete 所以只需要实现doGet/doPost 。
总结一下: 浏览器和其他工具(Ajax/HttpClient/Okhttp...) 发送的http请求的格式都是完全相同的,只是浏览器表单只能发送get/post , 但只要不是浏览器提交的, 其他工具都可以发送四种请求。
祝:学习愉快~
- 参与学习 人
- 提交作业 205 份
- 解答问题 4317 个
Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星