参考一百度文库: java
Cookie主要由Servlet容器来完成,用javax.servlet.http.Cookie类来实现,每个Cookie对象包含一个Cookie名字和Cookie值,相似于map键值对。
web
1. 服务器写Cookie到浏览器:建立一个Cookie对象,而后调用HttpServletResponse对象的addCookie()方法,将Cookie添加到HTTP响应结果中,即将cookie写到客户端浏览器上。数组
Cookie theCookie=new Cookie("username","Tom");浏览器
response.addCookie(theCookie);服务器
在Cookie构造方法中,第一个参数是Cookie的名字,第二个参数为Cookie值.cookie
2. 服务器从浏览器读Cookie:若是读取来自客户端的Cookie,能够经过如下方式从HTTP请求中取得全部的Cookie值app
Cookie cookie[]=request.getCookies();dom
该方法返回一个Cookie数组,若是HTTP中没有任何Cookie,那么getCookie返回null。spa
对于每个Cookie对象,能够调用getName()方法来得到Cookie的名字,而后调用getValue()方法得到Cookie的值.对象
if(cookie!=null){
for(int i=0;i<cookie.length;i++){
out.println("Cookie name:"+cookie[i]);
out.println("Cookie value:"+cookie[i].getValue());
}
}
3.当Servlet向客户端写Cookie时,能够经过Cookie类的setMaxAge(int expiry)方法来设置Cookie的有效期,参数expiry以秒为单位,它具备如下含义:
若是expiry大于零,就指示浏览器在客户端硬盘上保存Cookie的时间为expiry秒;
若是expiry等于零,就指示删除当前的Cookie;
若是expiry小于零,就指示浏览器不要把Cookie保存到客户端硬盘.Cookie仅仅用于当前的浏览器进程中,当浏览器进程关闭,Cookie就得消失;
Cookie的默认值为-1,对于来自客户端的Cookie,Servlet首先经过Cookie类的getMaxAge()方法来读取Cookie的有效期;
修更名为Tom的Cookie值,修改成Jack
if(cookie.getValue().equals("Tom")){
cookie.setValue("Jack");
response.addCookie(cookie);
}
删除名为Jack的Cookie值
if(cookie.getValue().equals("Jack"))
{
cookie.setMaxAge(0);
response.addCookie(cookie);
}
4.恭喜Cookie
若是服务器A上面有两个应用app1,app2,同时在服务器B上有一个应用app3,用户经过同一个浏览器访问app1,app2,app3应用,假设在app1应用的Web组件X在浏览器上保存了一个Cookie,当再次请求访问app1,app2,app3,应用中的其余组件时,只有app1应用的web组件能读取该Cookie,若是想要改变Cookie的共享范围,那么app1应用的web组件的X在写Cookie时,能够经过setPath(String path)和setDomain(String domain)方法来设置Cookie的path和domain属性.
1.让同一个Tomcat服务器A中的app1应用和app2应用共享Cookie,app1应用中的Web组件X的写Cookie的代码以下:
Cookie cookie=new Cookie("username","Tom");
cookie.setPath("/");
response.addCookie(cookie);
以上设置setPath()参数为"/",表示Tomcat服务器的根路径,所以同一个服务器上的全部Web应用能够共享上述Cookie.
2.只能让Tomcat服务器A的app2应用访问Cookie,app1应用中的Web组件X的写Cookie的代码以下:
Cookie cookie=new Cookie("username","Tom");
cookie.setPath("/app2/");
response.addCookie(cookie);
以上设置setPath()参数为"/app2",表示Tomcat服务器A的app2应用能够访问Cookie,app1应用也没法访问该Cookie.
3.只能让Tomcat服务器A的app1的应用中位于"/sub"子路径下的Web组件访问Cookie,app1应用的Web组件X的写Cookie的代码以下:
Cookie cookie=new Cookie("username","Tom");
cookie.setPath("/app1/sub/");
response.addCookie(cookie);
以上设置setPath()参数为"/app1/sub/",表示Tomcat服务器A的app1应用的位于"/sub"子路径的组件能够访问Cookie.
4.让Tomcat服务器B上的全部WEb应用访问Cookie,假定Tomcat服务器B的域名为为"www.cat.com",app1应用中的Web组件X的写Cookie的代码以下:
Cookie cookie=new Cookie("username","Tom");
cookie.setDomain(".cat.com"); //该参数必须以"."开头
cookie.setPath("/app3/");
response.addCookie(cookie);