cookie和session

1.cookie和session简介

由于HTTP协议是无状态的,所以用户向服务器发送的每一次请求都是独立的。这种情况下就比如说,用户每访问一次某个网站,都需要重新登录一次。也可以理解成服务器对于访问用户的登录信息不具备记忆功能,就算是同一个用户,第二次访问同一个网站,服务器也会把你当成是新用户。而cookie和session机制的出现就是为了解决这种无状态。有了它们,用户第一次访问时进行了登录,第二次访问时,多数情况下会自动登录。

2.有了cookie和session客户端访问服务器的流程:

(1)首先,客户端发送一个http请求到服务器端。

(2)服务器端接收客户端请求后,建立一个session,并发送一个http响应到客户端,这个响应头,其中就包含Set-Cookie头部。该头部包含了sessionId。Set-Cookie格式如下:

Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]

expires:指定cookie的过期时间
domain:指定关联的服务器或域
path:指定cookie关联的页面
secure:指定cookie的值如何通过网络在用户和web服务器之间传递。缺省情况下,这个属性为空,默认使用HTTP传递数据。如果被标记为“secure”,则使用HTTPS传递数据。

(3)客户端再次请求服务器,如果服务器给了set-Cookie,浏览器就会自动在请求头中添加cookie。

(4)服务器接收请求,分解cookie,验证信息,核对成功后返回response给客户端。

3.cookie和session的一些常见用法

cookie:

//创建Cookie对象,并设置该对象的键值
Cookie cookie = new Cookie("name","aa");

//将Cookie添加到response响应体中
respond.addCookie(cookie);

//获取Cookie的信息
Cookie[] cookies = request.Coooies();

//设置cookie存在本地的有效时间
cookie.setMaxAge(1*60*60*24);

//设置cookie在某个域名下生效
cookie.setDomain("");

//设置cookie在访问某个路径中生效
cookie.setPath("/blog/Login.jsp");

session:

//获取session,没有则创建
HTTPSession session = request.getSession();

//获取sessionID
session.getID();

//获取存储的某个值
session.getAttribute("key");

//存储数据,value是object类型
session.setAttribute("key", "value");

//移除某个数据
session.removeAttribute("key");
4.cookie和session的区别

(1)cookie是存储在本地浏览器,不占用服务器的存储空间,而session存储在服务器,需要占用服务器的存储空间
(2)cookie的安全性较低,容易造成信息泄露,session相对较安全
(3)cookie只能存储Ascll字符串,而session可以存储任何类型的数据

5.小结

session存储于服务器,可以理解为一个用户明细表,每一个用户拥有一个唯一识别符号sessionId,通常存放于cookie中。服务器收到cookie后解析出sessionId,再去session列表中查找,才能找到相应session。

cookie存储在客户端,可以理解为一个用户通行证,里面包含sessionId,浏览器通常会自动添加。当cookie被清空后,再次发出相同请求,又会生成新的sessionId

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值