【JavaWeb】GET、POST的区别和Cookie、Session的区别

【区别一】GET和POST的区别

在学JavaWeb-HTTP请求的过程当中,经常会这样遇到一个问题,那就是:你知道get请求和post请求的区别是什么吗?
于是乎,我百思而求解,在我写过无数个GET和POST请求,以及搜索了无数篇CSDN文章之后,这个答案似乎显而易见:

  • 请求形式:
  • GET请求是把请求的数据放在请求行中,访问地址栏中会回显传送的参数信息;
  • POST请求的请求参数一般在请求体中,不会在浏览器地址栏中追加参数,当需要发送一些较为隐私的信息时,最好采用POST请求。
  • 传输数据限制:
  • 实际上,GET请求只能发送普通的字符串,浏览器会限制url的长度,提交的数据一般限制在2K以内;
  • POST请求可以发送任何类型的数据,在理论上没有长度限制,但服务器会对其提交的数据大小做限制。
  • 安全性:
  • GET请求和POST请求的安全性是相对的。
  • 当你发送任何一个GET请求,最终响应的结果都会被浏览器缓存起来,而传输的数据参数会回显在地址栏中,所有人都可以查看,这也就是为什么GET请求安全性低的原因;
  • POST请求虽然不会出现这种情况,但是仔细想想服务器启用拦截功能,一般情况下是拦截POST请求提交的数据,而且POST请求向服务器端提交了数据也可能会更改服务器的数据,那么它的安全性也是相对的。
  • 编码方式:
  • GET请求只能进行url编码;
  • POST支持多种编码方式。

抛开表象看本质,一通追根溯源之下,我以为我悟了,无意中看见一篇文章告诉我,其实GET和POST本质上没有什么区别。
在这里插入图片描述
以下仅个人看完那篇文章之后的理解:
意思是说——
GET/POST是HTTP协议中的两种发送请求的方式,而HTTP是基于TCP/IP的关于数据如何在万维网中通信的协议。那么基于此,GET和POST的底层也是基于TCP/IP实现的,理论上GET和POST能做的事情是一样的。我们通过给GET加上request body,给POST带上url参数,就可以打破二者之间的“区别”。
说实话,在了解完它俩的区别之后,我也想过这个问题。按理来说,这在技术上完全行得通啊。但是如果真是这样那就太天真了!
(由于文字描述太多,复制粘贴也不太好,我直接截图奉上)
在这里插入图片描述
在这里插入图片描述
在我看了好几遍这篇文章之后,与其说是为了让读者知道GET和POST本质上没什么区别,倒不如说是让读者明白为什么GET和POST会出现这么多“区别”。
而后又学到了一点就是——
GET和POST的另一“重大区别”:
GET产生一个TCP数据包;POST产生两个TCP数据包。
即:在发送GET请求的时候,浏览器会把请求头和数据一起发送给服务器,在这个过程中GET请求只产生一个TCP数据包;而发送POST请求时,浏览器先发送请求头,服务器响应100之后,浏览器再发送数据,POST请求一共产生两个TCP数据包。

GET和POST两种基本请求方法的区别

【区别二】Cookie和Session的区别

这二者之间的区别,应该是各位在敲小案例或者看文档视频中都感受过的吧。
废话不多说,我们直接整活吧!
在这里插入图片描述

我们首先来说一说它俩是来干啥的,用官方一点的话来讲,cookie和session都是用来跟踪浏览器用户身份的会话方式。
那么具体来怎么理解呢?举个只要一搜Cookie和Session就能看见的例子来说——常见的就是网站登录,一般只需要登录一次,在一定的时期内,我们再次进入这个网站就不需要登录了,这个功能的实现就是通过会话技术将你的信息存储起来,在所设置的存活期内每次进入网站,都会获取被存储的用户信息。

作用讲完了,我们来说区别——

  • 创建方式:
  • Cookie是客户端会话技术,其数据保存在客户端;
  • Session是服务器端会话技术,其数据保存在服务器端。
  • 存储类型:
  • Cookie只能存储String类型的对象;
  • Session能够存储任意的java对象。
  • 生命周期:
  • Cookie和Session都存在有效期,即存活时间限制;
  • 默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁;Cookie可以通过setMaxAge设置有效时间(在此有效时间范围内,即使浏览器关闭了,仍然存在);
  • Session则是取决于服务器的设定,如果客户端长时间不向服务端发出请求,Session对象就会自动消失,这个时间取决于服务器(Tomcat服务器默认为30分钟),可以通过Session对象提供的方法或在web.xml文件中手工配置session的失效时间。
  • 存储数据限制:
  • Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,无法存储复杂需求;
    Session没有数据大小限制。
  • 优缺点:
  • Cookie:并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,别人可以分析存放在本地的Cookie并进行Cookie欺骗,因此最好不要保存敏感的、未加密的数据,否则会影响网站的安全性,所以出于安全性的考虑应当使用Session;
  • Session:Session会在一定时间内保存在服务器上,当Session超时或被关闭时将自动释放保存的数据信息,由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低。当访问增多,会占用较多的服务器资源,所以出于性能考虑则应当使用Cookie。
  • 适用场景:
  • Cookie:购物车、登录记住我功能等;
  • Session:登录验证信息、客户的私人信息等。

java session使用场景_cookie和session的的区别以及应用场景有哪些?

如有错误,请指正。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/aDiaoYa_/article/details/127331618