Cookie

创建Cookie

Cookie cookie = new Cookie("cookieName","cookieValue");
其中cookieName为Cookie对象的名称,未来获取Cookie的时候需要使用。cookieValue为Cookie对象的值也就是储存用户的信息如用户名、 密码等。
这步完成了只是实例化了对象,之后需要用到response.addCookie();将cookie加入到HTTP头中

读取Cookie

Cookie cookies[] = request.getCookies();
注意或得到的是所有Cookie的数组对象,需要循环遍历使用
for(int i=0;i<cookies.length;i++)
System.out.println(cookies[i].getValue());

Cookie中的方法  

类型 方法名 方法解释
String getName() 返回Cookie的名字。
String getValue() 返回Cookie的值。
void setValue(String newValue) cookie创建后设置一个新的值。
void setMaxAge(int expiry) 以秒计算,设置Cookie过期时间。
int getMaxAge() 返回Cookie过期之前的最大时间,以秒计算。
void setComment(String purpose) 设置cookie中注释。
String getComment() 返回cookie中注释,如果没有注释的话将返回空值.
String getDomain() 返回cookie中Cookie适用的域名. 使用getDomain() 方法可以指示浏览器把Cookie返回给同 一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始(例如.yesky.com)
String getPath() 返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下 的所有页面。
boolean getSecure() 如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。
int getVersion() 返回Cookie所遵从的协议版本。
void setDomain(String pattern) 设置cookie中Cookie适用的域名
void setPath(String uri) 指定Cookie适用的路径。
void setSecure(boolean flag) 指出浏览器使用的安全协议,例如HTTPS或SSL。
void setVersion(int v) 设置Cookie所遵从的协议版本。   
   
设置Cookie的存在时间,及删除Cookie

  在JSP中,使用setMaxAge(int expiry)方法来设置Cookie的存在时间,参数expiry应是一个整数。正值表示cookie将在这么多秒以后失效。注意这个值是cookie 将要存在的最大时间,而不是cookie现在的存在时间。负值表示当浏览器关闭时,Cookie将会被删除。零值则是要删除该Cookie。如:  
  

<%
   Cookie deleteNewCookie=new Cookie("newcookie",null);
   deleteNewCookie.setMaxAge(0); //删除该Cookie
   deleteNewCookie.setPath("/");
   response.addCookie(deleteNewCookie);
%>

需要注意的一些问题

  1. Cookie的兼容性问题

Cookie 的格式有2个不同的版本,第一个版本,我们称为Cookie Version 0,是最初由Netscape公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据RFC 2109文档制定的。为了确保兼容性,JAVA规定,前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目 前还不被Javax.servlet.http.Cookie包所支持。

  1. Cookie的内容

同样的Cookie的 内容的字符限制针对不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号都不能作为Cookie的内容。这也就 是为什么我们在例子中设定Cookie的内容为"Test_Content"的原因。
虽然在Cookie Version 1规定中放宽了限制,可以使用这些字符,但是考虑到新版本的Cookie规范目前仍然没有为所有的浏览器所支持,因而为保险起见,我们应该在Cookie的内容中尽量避免使用这些字符


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章