HTTP COOKIE实质是服务端与在客户端之间传送的普通HTTP头,可保存也可不保存在客户的硬盘上.如果保存,每一个文件大小不超过4K的文本文件.多个COOKIE可保存到同一个文件中. 如果从编程角度来看,在JSP中COOKIE就是JAVA提供的一个类.常用的方法如下所表示,因为客户端可能不接受COOKIE,所以建议不用它,改用SESSION等其他方式。

public class cookie
{
public String getDomain() //返回该COOKIE的有效域
public int getMaxAge() //返回该COOKIE的有效期,单位为秒
public String getName() //返回该COOKIE的名称
public String getPath() //返回该COOKIE的有效路径
public boolean getSecure() //返回该COOKIE的安全设置
public String getValue() //返回该COOKIE的值
public void setDomain(java.lang.String pattern) //设置该COOKIE的有效域
public void setMaxAge(int expiry) //设置该COOKIE的有效期,单位为秒
public void setPath(java.lang.String uri) //设置该COOKIE的有效路径
public void setSecure(boolean flag) //设置该COOKIE的安全设置
public void setValue(java.lang.String newValue) //设置该COOKIE的值
}

一个COOKIE包含以下五部分:
  1. NAME/VALUE对,设置该COOKIE的名字及它保存的值
  2. COOKIE通常和服务器相关,如果将域设为JAVA.SUN.COM,那么该COOKIE就和这个域相关,只对该网址起作用,当浏览该网址时,浏览器将把该COOKIE的内容发送给服务端,COOKIE是作为HTTP HEADER的一部分被发送的,如果没有设置域,那么COOKIE就只和创建该COOKIE的服务器相关.
  3. 路径用于指定服务器上可以使用该COOKIE的文件所在的路径,它只对该网址下的该路径下的应用起作用."/"表示服务器上所有目录都可以使用该COOKIE.
  4. COOKIE都有一个有效期,有效期默认值为-1,这表示没有保存该COOKIE,当该浏览器退出时,该COOKIE立即失效.
  5. 安全选项true/false,如果设置为true,那么在服务端与在客户端之间传送该COOKIE的内容时,采用HTTPS协议.

如何检查一个客户端是否支持COOKIE的方法:
用下面的方法写一个COOKIE到客户端,并确认成功
try
{
Cookie c = new Cookie("mycookie","COOKIE TEST");
response.addCookie(c);
}
catch(Exception e)
{
      System.out.println(e);
}


然后在一个新的JSP文件中:用下面的方法取客户端的COOKIE到cookies中, 如果cookies.length ==0,说明该客户端的浏览器不支持COOKIE
try
{
Cookie[] cookies = request.getCookies();
if(cookies.length ==0)
{
      System.out.println("not support cookie");
}
}
catch(Exception e)
{
      System.out.println(e);
}