Web---Servlet---Cookie运用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34928644/article/details/82423490

Cookie-简介:

Cookie,是客户端在访问web服务器时,服务器在客户端的机器上存放的信息。

服务器将Cookie保存在客户机器上的原因是为了跟踪客户的状态。这主要用于特殊的场合如电子商务。

JavaServletApiCookie提供了简单实现,javax.servlet.http.Cookie类表示Cookie

Cookie保存客户端的硬盘上,通过keyvalue值来保存信息,类似于MapCookiekeyvalue不能使用中文。如果要保存中文,必须使进行编码。

切记:

Cookie保存的时间通过设置setMaxAge来设置 (默认值为-1)

      如果大于0,就表示在客户机的硬盘上保存N秒。

      如果小于0,就表示不将Cookie保存到客户机的硬盘上,当浏览器关闭时,Cookie当即消失。

      如果等于0,就表示删除保存在客户机上的Cookie。

Cookie类的方法

cookie.setMaxAge(60);在客户端保存的有效时间,以秒为单位。

cookie.setPath(“/”);设置Cookie的有效使用域。默认为当前Servlet所在的目录。

      •设置为/则整个tomcat有效。

      •设置为/myProj即,整个myProj项目有效。

setDomain(“.hncu.cn”);//设置对使用了hncu.cn一级域名的所有二级域名有效。应该配合setPath(“/”);共同使用。

setSecure(true|false);默认值为false,是否只支持https

setHttpOnly(true|false):首先由MS推出此属性,后来被各浏览器支持。已经纳入servlet3.0规范。

保存中文的示例

一般情况key值不建议使用中文。value值可以使用中文,但必须要经过编码才可以保存,否则保存时会抛出异常。

当然,读取经过编码的值时,必须要再解码。

Cookie的Path问题

向客户机保存一个Cookie

Cookie c = new Cookie(“name”,”value”);  //声明Cookie

c.setMaxAge(60);设置时间,否则不会保存到本地文件中

httpServletresponse.addCookiec;    //保存Cookie

通过以下方法读取所有Cookie

Cookie[] cs = request.getCookies();

默认情况下,只有相同目录下的应用访问有效。

如果仅希望某个应用共享Cookie可以设置

Cookie.setPath(“/项目名称”);

要想让所有Tomcatweb应用共享Cookie可以设置

Cookie.setPath(“/”);

如果仅希望某个应用共享Cookie可以设置

Cookie.setPath(“/myWeb/”);

Cookie的细节

一个cookie只能表示简单的信息,且不能直接保存中文字符。它使用namevalue的形式保存数据。

W3c规定浏览器只允许存放300Cookie,一个站点最多可以存放20Cookie,每个cookie的容量最大为4K.

由于各个浏览器厂商对Cookie的限制有所变化,所以保存多少个要看浏览器的支持。目前一般支持保存50-80Cookie.每个Cookie大小为8K.可以使用IE测试。

如果创建了一个Cookie,它的生命周期默认为-1,maxAge-1,当关闭浏览器时,cookie即消失。可以通过setMaxAge修改它的生命周期,以秒为单位。如果设置成0,则通知浏览器删除Cookie。

代码:

注意:由于采用了注解的方式,所以javaEE必须要1.6版本或其他支持注解的javaEE版本。

cookie代码演示

猜你喜欢

转载自blog.csdn.net/qq_34928644/article/details/82423490