1.COOKIE是什么
COOKIE是存储在客户机的文本文件,它们保存了大量轨迹信息。在servlet技术基础上,JSP显然能够提供对HTTP COOKIE的支持。
通常有三个步骤来识别回头客:
- 服务器脚本发送一系列COOKIE至浏览器。比如名字,年龄,ID号码等等。
- 浏览器在本地机中存储这些信息,以备不时之需。
- 当下一次浏览器发送任何请求至服务器时,它会同时将这些COOKIE信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情
2.使用JSP设置COOKIE
(1)创建一个COOKIE对象: 调用COOKIE的构造函数,使用一个COOKIE名称和值做参数,它们都是字符串。
COOKIE COOKIE = new COOKIE("key","value");
请务必牢记,名称和值中都不能包含空格或者如下的字符:
[ ] ( ) = , " / ? @ : ;
(2) 设置有效期:调用setMaxAge()函数表明COOKIE在多长时间(以秒为单位)内有效。下面的操作将有效期设为了24小时。
COOKIE.setMaxAge(60*60*24);
(3) 将COOKIE发送至HTTP响应头中:调用response.addCOOKIE()函数来向HTTP响应头中添加COOKIE。
response.addCOOKIE(COOKIE);
3.实例演示
main.jsp 文件代码如下所示:
<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8" pageEncoding&#61;"UTF-8"%> <%&#64; page import&#61;"java.net.*" %> <% // 编码&#xff0c;解决中文乱码 String str &#61; URLEncoder.encode(request.getParameter("name"),"utf-8"); // 设置 name 和 url COOKIE COOKIE name &#61; new COOKIE("name", str); COOKIE url &#61; new COOKIE("url", request.getParameter("url")); // 设置COOKIE过期时间为24小时。 name.setMaxAge(60*60*24); url.setMaxAge(60*60*24); // 在响应头部添加COOKIE response.addCOOKIE( name ); response.addCOOKIE( url ); %> 网站名: <%&#61; request.getParameter("name")%> 网址: <%&#61; request.getParameter("url")%> 设置 COOKIE
以下是一个简单的 HTML 表单通过GET方法将客户端数据提交到 main.jsp 文件中,并设置 COOKIE&#xff1a;
charset&#61;"utf-8"> action&#61;"main.jsp" method&#61;GET> 站点名: type&#61;"text" name&#61;"name">
/> 网址: type&#61;"text" name&#61;"url" /> type&#61;"submit" value&#61;"提交" />
4.使用 JSP 读取 COOKIE
想要读取COOKIE&#xff0c;您就需要调用request.getCOOKIEs()方法来获得一个javax.servlet.http.COOKIE对象的数组&#xff0c;然后遍历这个数组&#xff0c;使用getName()方法和getValue()方法来获取每一个COOKIE的名称和值。
让我们来读取上个例子中的COOKIE, 以下为 COOKIE.jsp 文件代码&#xff1a;
<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8" pageEncoding&#61;"UTF-8"%> <%&#64; page import&#61;"java.net.*" %> http-equiv&#61;"Content-Type" content&#61;"text/html; charset&#61;UTF-8"> <% COOKIE COOKIE &#61; null; COOKIE[] COOKIEs &#61; null; // 获取COOKIEs的数据,是一个数组 COOKIEs &#61; request.getCOOKIEs(); if( COOKIEs !&#61; null ){ out.println(" 查找 COOKIE 名与值
"); for (int i &#61; 0; i < COOKIEs.length; i&#43;&#43;){ COOKIE &#61; COOKIEs[i]; out.print("参数名 : " &#43; COOKIE.getName()); out.print("
"); out.print("参数值: " &#43; URLDecoder.decode(COOKIE.getValue(), "utf-8") &#43;"
"); out.print("------------------------------------
"); } }else{ out.println("没有发现 COOKIE
"); } %>
5.使用JSP删除COOKIE
使用JSP删除COOKIE
删除COOKIE非常简单。如果您想要删除一个COOKIE&#xff0c;按照下面给的步骤来做就行了&#xff1a;
- 获取一个已经存在的COOKIE然后存储在COOKIE对象中。
- 将COOKIE的有效期设置为0。
- 将这个COOKIE重新添加进响应头中。
实例演示
下面的程序删除一个名为"name"的COOKIE&#xff0c;当您第二次运行COOKIE.jsp时&#xff0c;name 将会为 null。
<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8" pageEncoding&#61;"UTF-8"%> <%&#64; page import&#61;"java.net.*" %> http-equiv&#61;"Content-Type" content&#61;"text/html; charset&#61;UTF-8"> <% COOKIE COOKIE &#61; null; COOKIE[] COOKIEs &#61; null; // 获取当前域名下的COOKIEs&#xff0c;是一个数组 COOKIEs &#61; request.getCOOKIEs(); if( COOKIEs !&#61; null ){ out.println(" 查找 COOKIE 名与值
"); for (int i &#61; 0; i < COOKIEs.length; i&#43;&#43;){ COOKIE &#61; COOKIEs[i]; if((COOKIE.getName( )).compareTo("name") &#61;&#61; 0 ){ COOKIE.setMaxAge(0); response.addCOOKIE(COOKIE); out.print("删除 COOKIE: " &#43; COOKIE.getName( ) &#43; "
"); } out.print("参数名 : " &#43; COOKIE.getName()); out.print("
"); out.print("参数值: " &#43; URLDecoder.decode(COOKIE.getValue(), "utf-8") &#43;"
"); out.print("------------------------------------
"); } }else{ out.println("没有发现 COOKIE
"); } %>