1. 什么是Cookie??
* Cookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据。
* 首先由服务器通过响应头把Cookie传输给客户端,客户端会将Cookie保存起来。* 当客户端再次请求同一服务器时,客户端会在请求头中添加该服务器保存的Cookie,发送给服务器。* Cookie就是服务器保存在客户端的数据(保存在本地磁盘)!* Cookie就是一个键值对!!!
下面是一个jsp向客户端保存以及从客户端获取cookie的小例子:(cookieA.jsp用于向浏览器保存cookie,cookieB.jsp从客户端获取cookie)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>保存Cookie <%--由于在WebRoot下的Cookie目录下,所以访问地址栏的时候注意多加上/Cookie --%>保存cookie测试
<% Cookie cookie1 = new Cookie("aaa","AAA"); //创建Cookie对象,初始化一对键值对 response.addCookie(cookie1); //向浏览器中添加cookie Cookie cookie2 = new Cookie("bbb","BBB"); response.addCookie(cookie2); %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>向浏览器获取cookie 获取cookie测试
<% Cookie[] cookies = request.getCookies(); //获取的cookie以数组形式得到 if(cookies != null){ for(Cookie c : cookies){ //for循环的增强,迭代,常使用于数组和集合 out.print(c.getName()+"="+c.getValue()+" "); } } %>
2. cookie的生命周期
cookie.setMaxAge(); //设置cookie在客户机上的保存时间
* maxAge > 0:表示Cookie在客户端硬盘上保存的最大时间,单位为秒;
* maxAge < 0:表示Cookie不会被浏览器保存到硬盘上,而只在浏览器内存中存活,一旦客户端关闭浏览器,那么Cookie就消失; * maxAge == 0:表示删除Cookie,例如客户端硬盘已经存在名为abc的Cookie,如果服务器再向客户端发送名为abc,并且maxAge为0的Cookie,那么表示删除客户端上的名为abc的Cookie。下面用一个程序演示一下:
<CookieOverA.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>测试cookie生命周期 <% Cookie cookie3 = new Cookie("ccc","DDD"); cookie3.setMaxAge(60*60); //设置cookie1的值于一小时后自动删除 response.addCookie(cookie3); Cookie cookie4 = new Cookie("fff","FFF"); response.addCookie(cookie4); //由于未设置setMaxAge,默认 cookie2在浏览器关闭时删除%>
<CookieOverB.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>测试cookie生命周期 <% /* 接收cookie */ Cookie[] cookies = request.getCookies(); if(cookies != null){ for(Cookie c : cookies){ out.print(c.getName()+"="+c.getValue()+" "); } } /* 演示随时删除某cookie */ /* Cookie cookie3 = new Cookie("ccc","DDD"); cookie3.setMaxAge(0);//这句话表示删除cookie3该键值对 response.addCookie(cookie3); */ %>
配效果图两张:
3. cookie的path
1.注意该path并不是cookie保存在客户端的路径,只有当访问的地址包含cookie的path时,浏览器才会给请求的页面带来相应的cookie。
例如:上面的cookie3的path为/JSPTest/Cookie,那么只要当访问的地址包含这个path时,浏览器就会给这个页面带去cookie("ccc","DDD")该键值对。例如访问:/JSPTest/Cookie/a.jsp ; /JSPTest/Cookie/xx.jsp等等
备注:为cookie设置path的方法:cookie3.setPath=“/test”;