读取Cookie及Cookie全部属性操做方法

读取Cookie及Cookie全部属性操做方法  

2013-08-04 22:21:43|  分类: 技术 |  标签:cookie  |举报|字号 订阅html


 

    要把Cookie发送到客户端,Servlet先要调用new Cookie(name,value)用合适的名字和值建立一个或多个Cookie,经过cookie.setXXX设置各类属性,经过response.addCookie(cookie)把cookie加入应答头。web

  要从客户端读入Cookie,Servlet应该调用request.getCookies(),getCookies()方法返回一个Cookie 对象的数组。在大多数状况下,你只须要用循环访问该数组的各个元素寻找指定名字的Cookie,而后对该Cookie调用getValue方法取得与指定 名字关联的值。数组

 

1、浏览器容许每一个域名所包含的cookie数:浏览器

  Microsoft指出InternetExplorer8增长cookie限制为每一个域名50个,但IE7彷佛也容许每一个域名50个cookie服务器

  Firefox每一个域名cookie限制为50个。cookie

  Opera每一个域名cookie限制为30个。tcp

  Safari/WebKit貌似没有cookie限制。可是若是cookie不少,则会使header大小超过服务器的处理的限制,会致使错误发生。ide

  注:“每一个域名cookie限制为20个”将再也不正确!post

2、当不少的cookie被设置,浏览器如何去响应。url

  除Safari(能够设置所有cookie,无论数量多少),有两个方法:

  最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。InternetExplorer和Opera使用此方法。

  Firefox很独特:虽然最后的设置的Cookie始终保留,但彷佛随机决定哪些cookie被保留。彷佛没有任何计划(建议:在Firefox中不要超过Cookie限制)。

3、不一样浏览器间cookie大小也不一样:

  Firefox和Safari容许cookie多达4097个字节,包括名(name)、值(value)和等号。

  Opera容许cookie多达4096个字节,包括:名(name)、值(value)和等号。

  InternetExplorer容许cookie多达4095个字节,包括:名(name)、值(value)和等号。

注:多字节字符计算为两个字节。在全部浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。

 

 

 读取Cookie及Cookie全部属性操做方法,Cookie大小

 

1.设置Cookie  

Cookie cookie = new Cookie("key", "value");  
cookie.setMaxAge(60);  

设置60秒生存期,若是设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效。  

cookie.setPath("/test/test2");  

设置Cookie路径,不设置的话为当前路径(对于Servlet来讲为request.getContextPath() + web.xml里配置的该Servlet的url-pattern路径部分)  

response.addCookie(cookie);  

2.读取Cookie  

该方法能够读取当前路径以及“直接父路径”的全部Cookie对象,若是没有任何Cookie的话,则返回null  

Cookie[] cookies = request.getCookies();  

3.删除Cookie  

Cookie cookie = new Cookie("key", null);  

cookie.setMaxAge(0);  

设置为0为当即删除该Cookie  

cookie.setPath("/test/test2");  

删除指定路径上的Cookie,不设置该路径,默认为删除当前路径Cookie  

response.addCookie(cookie);  

4.注意:假设路径结构以下  

test/test2/test345/test555/test666  


a.相同键名的Cookie(值能够相同或不一样)能够存在于不一样的路径下。  

b. 删除时,若是当前路径下没有键为"key"的Cookie,则查询所有父路径,检索到就执行删除操做(每次只能删除一个与本身最近的父路径Cookie)  

FF.必须指定与设定cookie时使用的相同路径来删除改cookie,并且cookie的键名不论大写、小写或大小混合都要指定路径。  

IE.键名小写时,若是当前路径为/test/test2,若是找不到再向上查询/test、/test55五、/test345,若是还找不到就查询/ 。(/test555/test666不查询)  

键名大小写混合或大写时,不指定路径则默认删除当前路径,而且不向上查询。  

c.读取Cookie时只能读取直接父路径的Cookie。  

若是当前路径为/test/test2,要读取的键为"key"。当前路径读取后,还要读取/test,/test读取后,还要读取/  

d.在作Java的web项目时,因为通常的Web服务器(如Tomcat或Jetty)都用Context来管理不一样的Web Application,这样对于每一个Context有不一样的Path,  

在一个Server中有多个Web Application时要特别当心,不要设置Path为/的Cookie,容易误操做。(固然前提是域名相同)

 评论这张
相关文章
相关标签/搜索