Cookie《笔记》

Cookie

  • session的实现原理中,每一个session对象都会关联一个sessionid

    • 对于session关联的cookie来说,这个cookie是被保存在浏览器的“运行内存”当中
    • 只要浏览器不关闭,用户再次发送请求的时候,会自动将运行内存中的cookie发送给服务器
    • 服务器就是利用这个值来找到session对象的
  • cookie最终是保存在浏览器客户端上的

    • 可以保存在运行内存中(关闭浏览器就消失了)
    • 也可以保存在硬盘文件上(永久保存)
  • cookie作用:

    • cookie和session机制其实都是为了保存会话的状态
    • cookie是将会话的状态保存在浏览器客户端上
    • session是将会话的状态保存在服务器端上
    • 为什么要有cookie和session机制?
      • 因为HTTP协议是无状态的
  • cookie经典案例:

    • 商城在未登录的情况下,向购物车中放几件商品,然后关闭浏览器,再打开,里面的商品还在,怎么做到的?
      • 将购物车中的商品编号放到cookie当中,cookie保存在硬盘文件当中,这样即使关闭浏览器,硬盘上的cookie还在,再打开的时候就还存在
      • 注意cookie如果清除掉,购物车中的东西就消失了
    • 多少天免登录,也是通过cookie实现的
      • 怎么让cookie失效,多少天后自动失效,改密码
  • HTTP协议中规定:任何一个cookie都是由name和value组成的,name和value都是String类型

  • 在java中,提供了一个cookie类,只需要使用

    response.addCookie(cookie);
    
  • 关于cookie的有效时间

    • cookie.setMaxAge(60*60);//设置cookie在一小时之后失效
      
    • 没有设置有效时间:默认保存在浏览器的运行内存中,浏览器关闭则cookie消失

    • 只要设置cookie有效时间大于0,这个cookie一定会存储在硬盘文件中

    • 设置cookie有效期为0代表该cookie被删除,主要应用在:使用这种方式删除浏览器上的同名cookie

    • 设置cookie的有效期为负数时,表示该cookie不会被存储,表示不会被存储在硬盘文件中,会放在浏览器运行内存当中,和不调用setMaxAge效果相同

  • 关于cookie的path,cookie相关联的路径:

    • 假设现在发送的请求路径时“http://localhost:8080/servlet/cookie/generate"生成的cookie,如果cookie没有设置path,默认的path是什么?
      • 默认的path是:http://localhost:8080/servlet/cookie以及它的子路径
      • 也就是说以后浏览器的请求路径是http://localhost:8080/servlet/cookie以及它的子路径,cookie都会默认的携带到服务器中
    • 手动设置cookie的path
      • cookie.setPath("/servlet");表示只要是这个servlet项目的请求路径,都会提交这个cookie给服务器
  • 浏览器发送cookie给服务器,服务器中的java程序怎么接收?

    • Cookie[] cookies = request.getCookies();//这个方法可能返回null
      if(cookies != null){
      	for(Cookie cookie : cookies){
      	//获取cookie的name
      	String name = cookie.getName();
      	//获取cookie的value
      	String value = cookie.getValue();
      	}
      }
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值