cookie的设置(创建),获取与删除

本文详细介绍了如何进行Cookie的设置,包括创建Cookie对象、设置有效期和添加到HTTP响应头。同时,讲解了在浏览器中获取Cookie的方法,通过request.getCookies()遍历数组获取每个cookie的名称和值。最后,介绍了删除Cookie的步骤,即找到特定的Cookie,将其有效期设为0,再添加回响应头。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cookie和session都是会话跟踪技术,cookie一般储存客户端,session储存在服务器端(但sessionId储存在客户端),session的实现依赖于cookie,cookie存储不安全,session安全(用来储存重要信息),session储存占用服务器资源,一个cooike最多只能保存4k数据,大多数浏览器最多保存20个cookie。

因为cookie可以在浏览器禁用,所以可以用cookie加数据库的方式,如果cookie被禁用,可以用数据库获取值。

一.设置cookie
(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);
   eg:
   String str = URLEncoder.encode(request.getParameter("name"),"utf-8");  //从页面获取值
   // 设置 name 的cookie 
   Cookie name = new Cookie("name",str);
   // 设置cookie过期时间为24小时。
   name.setMaxAge(60*60*24); 
   // 在响应头部添加cookie
   response.addCookie( name );
 
二.在浏览器获取cookie
想要读取cookie,需要调用request.getCookies()方法来获得一个javax.servlet.http.Cookie对象的数组,然后遍历这个数组,使用getName()方法和getValue()方法来获取每一个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];
        
         out.print("参数名 : " + cookie.getName());
         out.print("<br>");
         out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
         
      }
  }
三.删除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/>");
         }
         out.print("参数名 : " + cookie.getName());
         out.print("<br>");
         out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
      }
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值