常日有三个步骤来识别转头客:

· 做事器脚本发送一系列cookies至浏览器。
比如名字,年事,ID号码等等。

· 浏览器在本地机中存储这些信息,以备时时之需。

jspcookie例子重走Java编程路JSP Cookies 处置 NoSQL

· 当下一次浏览器发送任何要求至做事器时,它会同时将这些cookies信息发送给做事器,然后做事器利用这些信息来识别用户或者干些其它事情。

本章节将会传授您如何去设置或重设cookie的方法,还有如何访问它们及如何删除它们。

Cookie阐发

Cookies常日在HTTP信息头中设置(虽然JavaScript能够直接在浏览器中设置cookies)。
在JSP中,设置一个cookie须要发送如下的信息头给做事器:

正如您所见,Set-Cookie信息头包含一个键值对,一个GMT(格林尼治标准)韶光,一个路径,一个域名。
键值对会被编码为URL。
有效期域是个指令,见告浏览器在什么时候之后就可以打消这个cookie。

如果浏览器被配置成可存储cookies,那么它将会保存这些信息直到过期。
如果用户访问的任何页面匹配了cookie中的路径和域名,那么浏览器将会重新将这个cookie发回给做事器。
浏览器真个信息头长得就像下面这样:

JSP脚本通过request工具中的getCookies()方法来访问这些cookies,这个方法会返回一个Cookie工具的数组。

Servlet Cookies 方法

下表列出了Cookie工具中常用的方法:

序号方法 & 描述1public void setDomain(String pattern)设置cookie的域名,比如w3cschool.cn2public String getDomain()获取cookie的域名,比如w3cschool.cn3public void setMaxAge(int expiry)设置cookie有效期,以秒为单位,默认有效期为当前session的存活韶光4public int getMaxAge()获取cookie有效期,以秒为单位,默认为-1 ,表明cookie会活到浏览器关闭为止5public String getName()返回 cookie的名称,名称创建后将不能被修正6public void setValue(String newValue)设置 cookie的值7public String getValue()获取cookie的值8public void setPath(String uri)设置cookie 的路径,默认为当前页面孔录下的所有URL,还有此目录下的所有子目录9public String getPath()获取cookie 的路径10public void setSecure(boolean flag)指明cookie是否要加密传输11public void setComment(String purpose)设置注释描述 cookie的目的。
当浏览器将cookie展现给用户时,注释将会变得非常有用12public String getComment()返回描述cookie目的的注释,若没有则返回null

利用JSP设置Cookies

利用JSP设置cookie包含三个步骤:

(1)创建一个Cookie工具: 调用Cookie的布局函数,利用一个cookie名称和值做参数,它们都是字符串。

Cookie cookie = new Cookie(\公众key\"大众,\"大众value\"大众);

请务必牢记,名称和值中都不能包含空格或者如下的字符:

[ ] ( ) = , \"大众 / ? @ : ;

(2) 设置有效期:调用setMaxAge()函数表明cookie在多永劫光(以秒为单位)内有效。
下面的操作将有效期设为了24小时。

cookie.setMaxAge(606024);

(3) 将cookie发送至HTTP相应头中:调用response.addCookie()函数来向HTTP相应头中添加cookies。

response.addCookie(cookie);

实例演示

将上面两个文件放在<Tomcat安装目录>/webapps/ROOT目录下,然后访问http://localhost:8080/hello.jsp,将会得到如下输出结果:

试着输入First Name和Last Name,然后点击提交按钮,它将会在您的屏幕中显示first name和last name,并且设置first name和last name两个cookie,下一次点击提交按钮时会发给做事器。

利用JSP读取Cookies

想要读取cookies,您就须要调用request.getCookies()方法来得到一个javax.servlet.http.Cookie工具的数组,然后遍历这个数组,利用getName()方法和getValue()方法来获取每一个cookie的名称和值。

<h3实例演示< h3=\"大众\公众>

让我们来读取上个例子中的cookies。

如果您把first name cookie设置成\"大众John\公众,last name设置成\公众Player\公众,访问 http://localhost:8080/main.jsp,将会得到如下输出结果:

Found Cookies Name and Value

Name : first_name, Value: John

Name : last_name, Value: Player

利用JSP删除Cookies

删除cookies非常大略。
如果您想要删除一个cookie,按照下面给的步骤来做就行了:

· 获取一个已经存在的cookie然后存储在Cookie工具中。

· 将cookie的有效期设置为0。

· 将这个cookie重新添加进相应头中。

实例演示

下面的程序删除一个名为\公众first_name\"大众的cookie,当您下次运行main.jsp时,first_name将会为null。

访问它,将会得到如下输出结果:

Cookies Name and Value

Deleted cookie : first_name

Name : first_name, Value: John

Name : last_name, Value: Player

再次访问http://localhost:8080/main.jsp,将会得到如下结果:

Found Cookies Name and ValueName : last_name, Value: Player

您也可以手动在浏览器中删除cookies。
点击Tools菜单项,然后选择Internet Options,点击Delete Cookies,就能删除所有cookies了。