JSP Cookie 处理

Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息。在Servlet技术基础上,JSP显然能够提供对HTTP cookie的支持。

通常有三个步骤来识别回头客:

  1. 服务器脚本发送一系列cookie至浏览器。比如名字,年龄,ID号码等等。
  2. 浏览器在本地机中存储这些信息,以备不时之需。
  3. 当下一次浏览器发送任何请求至服务器时,它会同时将这些cookie信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情。

JSP Cookie处理需要对中文进行编码与解码

String   str   =   java.net.URLEncoder.encode("中文", "UTF-8");            //编码
String   str   =   java.net.URLDecoder.decode("编码后的字符串","UTF-8");   // 解码
(1)创建一个 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);

示例
<%
   // 编码,解决中文乱码   
   String str = URLEncoder.encode(request.getParameter("name"),"utf-8");  
   // 设置 name 和 url cookie 
   Cookie name = new Cookie("name",
           str);
   Cookie url = 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 );
%>
<%
   Cookie cookie = null;
   Cookie[] cookies = null;
   // 获取 cookies 的数据,是一个数组
   cookies = request.getCookies();
   if( cookies != null ){
      for (int i = 0; i < cookies.length; i++){
         cookie = cookies[i];
         out.print("参数名 : " + cookie.getName());
         out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8"));
      }
  }else{
      out.println("没有发现 Cookie");
  }
%>
删除 cookie 非常简单。如果您想要删除一个 cookie,按照下面给的步骤来做就行了:
    获取一个已经存在的 cookie 然后存储在 Cookie 对象中。
    将 cookie 的有效期设置为 0。
    将这个 cookie 重新添加进响应头中。

<%
   Cookie cookie = null;
   Cookie[] cookies = null;
   // 获取当前域名下的cookies,是一个数组
   cookies = request.getCookies();
   if( cookies != null ){
      for (int i = 0; i < cookies.length; i++){
         cookie = cookies[i];
         if((cookie.getName( )).compareTo("name") == 0 ){
            cookie.setMaxAge(0);
            response.addCookie(cookie);
            out.print("删除 Cookie: " + 
            cookie.getName( ) + "<br/>");
         }
      }
  }else{
      out.println("没有发现 Cookie");
  }
%>
原文地址:https://www.cnblogs.com/loveer/p/11346347.html