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给服务器
- 假设现在发送的请求路径时“http://localhost:8080/servlet/cookie/generate"生成的cookie,如果cookie没有设置path,默认的path是什么?
-
浏览器发送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(); } }
-