servlet中doget和dopost方法的区别
2016-09-02 09:26
615 查看
作者:chainho
链接:http://www.zhihu.com/question/20144588/answer/80058973
来源:知乎
也就是说GET方法不应该被用来做能引起服务端副作用的操作。POST主要用于创建或者更新资源信息
此外,关于GET方法还有一个称呼是幂等(idempotent)方法。
而所谓idempotent,是指无论操作多少次,结果都是一样的。而POST方法,自然不是幂等的,因为他每次都向服务端提交数据,这也是要特别注意表单重复提交的问题。
但开发中,GET方法却为开发人员大量的不分情况的使用。像提交数据,获取信息,删除等等操作。
而大部分应用服务器和Web Server的实现中,都会提供记录accesslog的机制。
这个accesslog会记一些什么呢?下面是tomcat中的GET方法的一条访问记录,我们发现请求中附加的参数也一同被编码记录了下来。
[07/Jan/2016:11:40:50 +0800] "GET /test/servlet?abc=%E4%BD%A0%E5%A5%BD HTTP/1.1" 200 117
而POST方法,log记录下来的只有请求路径而已。
[07/Jan/2016:11:09:11 +0800] "POST /test/servlet HTTP/1.1" 200 127
而这些访问日志在应用中又有可能会提供给第三方的app做统计分析使用,试想,如果如果提交的数据中包含用户名、密码之类的关键信息,那两种方式一对比,就知道该用啥了。
3 对比
GET 请求的一些特点:
GET 请求会有 cache
GET 请求会保留在浏览历史中
GET 请求可以保存到书签
GET 请求不应用于处理敏感数据
GET 请求有长度限制
GET 请求应该只用于获取数据
POST 请求的一些特点:
POST 不会有cache
POST 请求不会出现在浏览器的浏览历史中
POST 请求不能保存到书签
POST 也是有长度限制的(不同的Web Server可能实现不同)
GET方式采用URL跳转的方式来请求
POST采用表单提交方式来请求
区别:GET请求的网页参数都是直接通过URL来携带,POST可以压入HTTP协议中的param中传递
get方式会把请求参数拼接到请求路径上,并且有长度限制。post方式把请求参数显示到请求体中,没有长度限制。
其实,POST也是有长度限制的,不是一般说的POST不限制,默认是2097152;而GET参数个数也是有限制的,默认是10000
链接:http://www.zhihu.com/question/20144588/answer/80058973
来源:知乎
也就是说GET方法不应该被用来做能引起服务端副作用的操作。POST主要用于创建或者更新资源信息
此外,关于GET方法还有一个称呼是幂等(idempotent)方法。
而所谓idempotent,是指无论操作多少次,结果都是一样的。而POST方法,自然不是幂等的,因为他每次都向服务端提交数据,这也是要特别注意表单重复提交的问题。
但开发中,GET方法却为开发人员大量的不分情况的使用。像提交数据,获取信息,删除等等操作。
而大部分应用服务器和Web Server的实现中,都会提供记录accesslog的机制。
这个accesslog会记一些什么呢?下面是tomcat中的GET方法的一条访问记录,我们发现请求中附加的参数也一同被编码记录了下来。
[07/Jan/2016:11:40:50 +0800] "GET /test/servlet?abc=%E4%BD%A0%E5%A5%BD HTTP/1.1" 200 117
而POST方法,log记录下来的只有请求路径而已。
[07/Jan/2016:11:09:11 +0800] "POST /test/servlet HTTP/1.1" 200 127
而这些访问日志在应用中又有可能会提供给第三方的app做统计分析使用,试想,如果如果提交的数据中包含用户名、密码之类的关键信息,那两种方式一对比,就知道该用啥了。
3 对比
GET 请求的一些特点:
GET 请求会有 cache
GET 请求会保留在浏览历史中
GET 请求可以保存到书签
GET 请求不应用于处理敏感数据
GET 请求有长度限制
GET 请求应该只用于获取数据
POST 请求的一些特点:
POST 不会有cache
POST 请求不会出现在浏览器的浏览历史中
POST 请求不能保存到书签
POST 也是有长度限制的(不同的Web Server可能实现不同)
GET方式采用URL跳转的方式来请求
POST采用表单提交方式来请求
区别:GET请求的网页参数都是直接通过URL来携带,POST可以压入HTTP协议中的param中传递
get方式会把请求参数拼接到请求路径上,并且有长度限制。post方式把请求参数显示到请求体中,没有长度限制。
其实,POST也是有长度限制的,不是一般说的POST不限制,默认是2097152;而GET参数个数也是有限制的,默认是10000
相关文章推荐
- Servlet之doGet()和doPost()方法区别和联系【入门版,初学者必看】
- Servlet的doGet与doPost方法的区别与使用
- servlet中的service, doGet, doPost方法的区别和联系
- SERVLET中的doGet与doPost两个方法之间的区别
- SERVLET中的doGet与doPost两个方法之间的区别
- Servlet的doGet 和doPost方法的区别
- Servlet中doGet和doPost方法有何区别?
- moo 7 Servlet init() doget() dopost() service()方法之间的区别及应用/GenericServlet、Servlet、HttpServlet借口之间的关系
- Servlet中doGet和doPost方法区别
- [转]servlet中的service, doGet, doPost方法的区别和联系
- SERVLET中的doGet与doPost两个方法之间的区别
- 转: servlet中的service, doGet, doPost方法的区别和联系
- WEB应用中的servlet的 service,doPost,doGet方法的关系
- servlet中service() doGet() doPost() 方法
- 关于doGet()和doPost()方法区别的整理
- Servlet中doGet与doPost的区别..
- 如何去掉myeclipse8.5中servlet模板中doGet和doPost方法中多余的代码
- Servlet中doGet和doPost等方法
- servlet doPost() doHead() doGet()等方法被执行的由来
- doGet和doPost的区别(servlet)