Cookie
在JSP中使用cookie
创建cookie
Cookie objcookie = new Cookie("mycookie","Cookie test");
建立了Cookie之后,该Cookie数据还必须传送到客户端。
response.addCookie(objcookie);
读Cookie
Cookie[] 数组变量名 = request.getCookies();
在客户端传来的Cookie数据类型都是数组类型,因此要得到其中某一项指定的Cookie对象,需要遍历数组来找。调用getName()方法检查各个Cookie的名字,直至找到目标Cookie,然后对该Cookie调用getValue()方法取得与指定名字关联的值。
<% Cookie[] cookies = request.getCookies(); if(cookies=null){ out.println("no cookie"); }else{ for(int i=0;i<cookies.length;i++){ if(cookies[i].getName().equals("cookie_name")){ out.println(cookies[i].getValue()+"<br/>"); } } } %>
设置Cookie的存在期限
<%
Cookie login = new Cookie("today","true");
login.setMaxAge(86400);
reponse.addCookie(login);
%>
删除Cookie
必须使用前面的setMaxAge()方法,并将Cookie的存在期限设置为0.
login.setMaxAge(0);
writeCookie.jsp写入一个Cookie到客户端
<%@ page contentType="text/html;charset=gb2312"%> <html> <head> <title>操纵Cookie示例-写入Cookie</title> </head> <body> <h2>操纵Cookie示例-写入Cookie</h2> <% try { Cookie _Cookie = new Cookie("mycookie", "COOKIE_TEST"); _Cookie.setMaxAge(10 * 60); // 设置Cookie的存活时间为10分钟 response.addCookie(_Cookie); // 写入客户端硬盘 out.print("已经把Cookie写入客户端"); } catch (Exception e) { System.out.println(e); } %> </body> </html>
readCookie.jsp
<%@ page contentType="text/html;charset=gb2312"%> <html> <head> <title>操纵Cookie示例-读取Cookie</title> </head> <body> <h2>操纵Cookie示例-读取Cookie</h2> <% // 将当前站点的所有Cookie读入并存入Cookies数组中 Cookie[] Cookies = request.getCookies(); Cookie sCookie = null; String cookieName = null; String cookieValue = null; if (Cookies == null) // 如果没有任何Cookie out.print("没有Cookie"); else { try { if (Cookies.length == 0) { System.out.println("客户端禁止写入cookie"); } else { for (int i = 0; i < Cookies.length; i++) { // 循环列出所有可用的Cookie sCookie = Cookies[i]; cookieName = sCookie.getName(); cookieValue = sCookie.getValue(); if (cookieName.equals("mycookie")) { out.println(cookieName + "->" + cookieValue + "<br>"); break; } } } } catch (Exception e) { System.out.println(e); } } %> </body> </html>
readCookie.jsp必须注意两个问题;一是读取Cookie数组时需要判断是否为null,为空则不能进行下一步操作。二是对Cookie的数组长度进行判断,如果Cookie.length=0,说明该客户端浏览器不支持Cookie。