Servlet Cookie
// 文件路径 D:\ApacheServer\web_java\HelloWorld\src\com\test\TestServletCookie.java package com.test; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestServletCookie { public void testfun(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置返回响应内容类型及编码,否则返回输出中文会乱码 response.setContentType("text/html;charset=UTF-8"); // Servlet Cookie 处理需要对中文进行编码与解码,方法如下 String enStr = java.net.URLEncoder.encode("测试中文", "UTF-8"); // 编码 String deStr = java.net.URLDecoder.decode(enStr, "UTF-8"); // 解码 // 创建新 cookie 对象 并赋键值对,键值即该 cookie 名称,这里值赋中文值,需要先编码 Cookie cookie = new Cookie("testKey",enStr); // 设置 cookie 适用的域名,例如 runoob.com,这里是 localhost(不用加:8080端口号) cookie.setDomain("localhost"); // 获取 cookie 适用的域,例如 runoob.com cookie.getDomain(); // 设置 cookie 过期的时间(以传给客户端为起始,以秒为单位)。如果不设置,cookie 只会在当前 session 会话中持续有效。或者cookie.setMaxAge(0) 即表示删除这个cookie cookie.setMaxAge(3600 * 24); // 返回 cookie 的最大生存周期(以秒为单位),默认情况下,-1 表示 cookie 将持续下去,直到浏览器关闭。 cookie.getMaxAge(); // 返回 cookie 的名称。名称在创建后不能改变。 cookie.getName(); // 设置 cookie 的值,除了创建 cookie 对象时赋值,setValue() 方法也可赋值。赋的值非中文就不用转码了 cookie.setValue("newTestVal"); // 获取 cookie 的值 cookie.getValue(); // 设置 cookie 适用的路径uri。浏览器在发该 cookie 消息给服务器之前,请求的 url 中必须存在一个指定 uri 路径。这个比较是通过将 path 属性值与请求的 url 从头开始逐字符串比较完成的。如果字符匹配,则发送该 cookie 消息。如果不指定路径,与当前页面相同目录(uri)下的(包括子目录下的)所有 url 浏览器都会返回 cookie。 cookie.setPath("/HelloWorld/TomcatTest/TestServlet");// 此时浏览器完整访问路径为 http://localhost:8080/HelloWorld/TomcatTest/TestServlet // 获取 cookie 适用的路径uri。 cookie.getPath(); // 设置布尔值,表示 cookie 是否应该只在加密的(即 SSL)连接上发送。 cookie.setSecure(false); // 设置该 cookie 在浏览器中不能通过 Javascript 的 document.cookie 属性访问 cookie.setHttpOnly(true); // 设置cookie的注释。该注释在浏览器向用户呈现 cookie 时非常有用。 cookie.setComment("testNotes"); // 获取 cookie 的注释,如果 cookie 没有注释则返回 null。 cookie.getComment(); // 输出 cookie值,中文的话需要解码 response.getWriter().append("<br/>创建并发送给浏览器的 cookie : testKey 值为 : " + java.net.URLDecoder.decode(cookie.getValue(), "UTF-8")); // 发送 Cookie 到 HTTP 响应头,即将 cookie 传到浏览器 response.addCookie(cookie); // 获取览器发送的与当前页面 url 相关的 Cookie 的数组 Cookie request_cookie[] = request.getCookies(); if( request_cookie != null ){ // 遍历获取每一个浏览器发送的 cookie for (int i = 0; i < request_cookie.length; i++){ cookie = request_cookie[i]; // 对比找到指定名称的 cookie if((cookie.getName( )).compareTo("delCookieName") == 0 ){ // 然后删除 cookie.setMaxAge(0); response.addCookie(cookie); }else { response.getWriter().append("<br/>浏览器上传 cookie 名称 : " + cookie.getName() + " 值为 : " + cookie.getValue()); } } }else{ response.getWriter().append("<br/>No Cookie founds"); } } }