Cookie和Session以及他们的区别

本文详细解析了会话跟踪技术,包括Cookie作为客户端会话跟踪,其原理、存储、编码以及Session作为服务端会话跟踪,如何通过HTTPSession实现数据共享。对比了两者在存储位置、安全性、大小和性能上的关键特性。

---------------------------------会话跟踪技术---------------------------------------
  会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应
  会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自同一浏览器,以便在同一次会话的多次请求间共享数据
  HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享


客户端会话跟踪技术:Cookie
服务端会话跟踪技术:Session


---------------------------------Cookie

Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息


//基本使用
  发送Cookie
  1.创建Cookie对象,设置数据
     Cookie cookie = new Cookie("key","value");
  2.发送Cookie到客户端:使用response对象
     response.addCookie(cookie);
  获取Cookie
  3.Cooike[] cookies = request.getCookies();
  4.遍历数组,获取每一个Cookie;
  5.获取数据 cookie.getName() cookie.getValue();

//原理
   Cookie的实现是基于HTTP协议的
     响应头:set-cookie
     请求头:cookie

//使用细节
  Cookie存活时间
    >默认情况下,存储在浏览器中,浏览器关闭后,Cooike也被销毁
    >setMaxAge(int seconds):设置Cookie存活时间
      1.正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储。到时间自动删除
      2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁
      3.零:删除对应Cookie

 Cookie存储中文
   >Cookie默认不能存储中文
   >存储中文需要进行URL编码
     URLEncode  URLDecode
--------------------------------Session

 Session是服务器为了保存用户状态而创建的一个特殊的对象。

当浏览器第一次访问服务器时,服务器创建一个session对象(该
对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId
以cookie的方式发送给浏览器。
当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据
sessionId就可以找到对应的session对象。

JavaEE提供HTTPSession接口,来实现一次会话的多次请求间数据共享功能
//使用:
    1.获取Session对象  request.getSession();
    2.Session对象功能:
  void setAttribute(String name,O object);设置键,值,存到request域中
  Object getAttribute(String name);通过键,获取值
  void removeAttribute(String name);通过键,删除该键值对
 
//原理
  Session是基于Cookie实现的
   

//使用细节
  ·Session钝化、活化
    服务器重启后,Session中的数据是否还存在?
      >钝化:服务器正常关闭后,Tomcat会自动将Session数据写入硬盘文件中
      >活化:再次启动服务器后,从文件中加载数据到Session中
  ·Session销毁  
      默认情况下,无操作,30分钟自动摧毁
       <session-config>
           <session-timeout>30</session-timeout>
       </session-config>
      调用Session对象的invalidate()方法

Cookie和Session都是来完成一次会话内多次请求间数据共享的

区别:

存储位置:Cookie是将数据存储在客户端,Session将数据存储在服务端

安全性:Cookie不安全,Session安全

数据大小:Cookie最大3KB,Session无大小限制

存储时间:Cookie可以长期存储,Session默认30分钟

服务器性能:Cookie不占服务器资源,Session占用服务器资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值