1、Cookie是什么?
- 翻译:曲奇饼干
2、Cookie有何用?
- Cookie可以保存会话状态,但是这个会话状态是保留在客户端上
- 只要Cookie清除或者失效,这个会话状态就没有了
3、Cookie保存在哪里?
- Cookie是保存在浏览器客户端上的
- Cookie可以保存在浏览器的缓存中,浏览器关闭,Cookie消失
- Cookie也可以保存在客户端的硬盘文件中,浏览器关闭Cookie还在,除非Cookie失效
4、Cookie只有在JavaWeb中有吗?
- Cookie不只是在JavaWeb中存在
- 只要是web开发,只要是B/S架构的系统,只要是基于HTTP协议,那么就有Cookie的存在
- Cookie这种机制是HTTP协议规定的
5、Cookie常见的实现功能
- 保留购物车商品的状态在客户端上
- 十天内免登录……
6、Java中的Cookie
- 在Java中,Cookie被当作类来处理,使用new运算符可以创建Cookie对象
- Cookie有两部分组成,分别是Cookie的name和value,name和value都是字符串类型String
- 在Java中怎么创建Cookie对象?
- Cookie cookie = new Cookie(String cookieName,String cookieValue);
7、服务器发送Cookie
- 服务器一次可以向浏览器发送多个Cookie
- response.addCookie(Cookie cookie);//将Cookie对象发送给浏览器客户端
- 默认情况下,服务器发送Cookie给浏览器之后,浏览器将Cookie保存在缓存当中,只要不关闭浏览器,Cookie永远存在,并且有效。当关闭浏览器之后,缓存中的Cookie被清除。
8、浏览器客户端中的Cookie
- 在浏览器客户端,无论是硬盘文件中的Cookie,还是缓存中保存的Cookie,什么时候会再次发送给服务器?
- 浏览器会不会提交发送这些Cookie给服务器,这是和请求路径有关的
- 请求路径和Cookie是紧密关联的
- 不同的请求路径会发送提交不同的Cookie
9、Cookie和路径绑定
- 默认情况下,Cookie会和哪些路径绑定在一起?
- /prj-servlet-18/test/createAndSendCookieToBrowser 请求服务器,服务器生成Cookie,并将Cookie发送给浏览器客户端,这个浏览器中的Cookie会默认和“test/”这个路径绑定在一起。也就是说,以后只要发送“test/”请求,Cookie一定会提交给服务器。
- /prj-servlet-18/a 请求服务器,服务器生成Cookie,并将Cookie发送给浏览器客户端,这个浏览器中的Cookie会默认和“prj-servlet-18/”这个路径绑定在一起。也就是说,以后只要发送“prj-servlet-18/”请求,Cookie一定会提交给服务器。
10、指定路径
- 其实路径是可以指定的,通过Java程序进行设置,保证Cookie和某个特定的路径绑定在一起
- cookie.setPath();
- 假设,执行了这样的程序:cookie.setPath(“/prj-servlet-18/king”);
- 那么,Cookie将和“/prj-servlet-18/king”路径绑定在一起
- 只有发送“/prj-servlet-18/king”请求路径,浏览器才会提交Cookie给服务器
11、设置Cookie有效时长
- 默认情况下,没有设置Cookie有效时长,该Cookie被默认保存在浏览器的缓存中
- 只要不关闭浏览器,Cookie就会存在,一旦关闭,Cookie就会消失
- 可以通过设置Cookie的有效时长,来保证Cookie保存在硬盘文件当中
- cookie.setMaxAge(60*60);//设置cookie最大有效时长1小时
- 但是,这个有效时长必须是大于0的。
- 换句话说,只要设置Cookie的有效时长大于0,则该Cookie会被保存在客户端硬盘文件中,有效时长过去之后,硬盘文件中的Cookie失效
- Cookie有效时长 = 0 【直接被删除】
- Cookie有效时长 < 0 【不会被存储】
- Cookie有效时长 > 0 【存储在硬盘文件中】
12、服务器接收Cookie
- 浏览器提交Cookie给服务器,服务器怎么接收Cookie? ```java //从request对象中获取所有提交的Cookie Cookie[] cookies = request.getCookies();
if(cookies!=null){ for(Cookie cookie : cookies){ String cookieName = cookie.getName(); String cookieValue = cookie.getValue(); System.out.println(cookieName + “=” + cookieValue); } } ```
