Cookie和Session学习

Cookie和Session学习

产生

由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识别具体的用户。

Session产生

session 是一个抽象概念,开发者为了实现中断和继续等操作,将 user agent 和 server 之间一对一的交互,抽象为“会话”,进而衍生出“会话状态”,也就是 session 的概念。

典型的场景:购物车

下单时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。

Session是保存在服务端的,有一个唯一标识。

Cookie产生

cookie 是一个实际存在的东西,http 协议中定义在 header 中的字段。

为了识别特定的客户,产生了Cookie

每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID。

总结:

session 因为 session id 的存在,通常要借助 cookie 实现,但是布置非要这样获取。

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中; Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

 

使用场景

Cookie使用场景:

自动登录

  Cookie cookie = new Cookie("user", "suntao");
  cookie.setMaxAge(7*24*60*60);     // 一星期有效
  response.addCookie(cookie);
// 因为取得的是整个网页作用域的Cookie的值,所以得到的是个数组
  Cookie[] cookies = request.getCookies();
​
  for(int i = 0 ; i < cookies.length ; i++){
   String name = cookies[i].getName() ;
    String value = cookies[i].getValue() ;
   }

Session使用场景

session代表会话,代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续。

session因为请求(request对象)而产生; session是一个容器,可以存放会话过程中的任何对象; session的创建与使用总是在服务端,浏览器从来都没有得到过session对象; session是一种http存储机制,目的是为武装的http提供持久机制。

sessionid存储结构

在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值