常日有三个步骤来识别转头客:
· 做事器脚本发送一系列cookies至浏览器。比如名字,年事,ID号码等等。
· 浏览器在本地机中存储这些信息,以备时时之需。
· 当下一次浏览器发送任何要求至做事器时,它会同时将这些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了。