zoukankan      html  css  js  c++  java
  • servlet中doget和dopost方法的区别

    作者: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

  • 相关阅读:
    《Python for Beginners》学习笔记(2)
    《Python for Beginners》学习笔记(6)
    《Python for Beginners》学习笔记(4)
    《C Primer Plus》阅读笔记(1)
    《Python for Beginners》学习笔记(7)暨结课总结
    《Python for Beginners》学习笔记(5)
    《Python基础教程》读书笔记(1)
    《Python for Beginners》学习笔记(3)
    让Rails版的FCKEditor支持动态设置上传目录
    FCKEditor与rails的集成
  • 原文地址:https://www.cnblogs.com/cyy-13/p/5832164.html
Copyright © 2011-2022 走看看