cookie的简单使用

一、cookie的作用

在我们平常写的B/S程序中,会经常用到cookie,主要有以下一些作用:

1、 记录用户名和密码

以及该用户需要保存的一些信息,如购物购站,使用cookie,可以让用户自动登录到站点等。

2、 定制站点

可以使用cookie来记录用户的偏好。

3、 定向广告

可以使用cookie来记录用记经常访问的主题,并向他们显示与这些主题相关的广告。


二、向客户程序发送cookie

1、 创建cookie对象

Cookie c = new Cookie(“userId”,”landril”);

2、 设置最大时效,默认该cookie是存储在浏览器的内在中,用户关闭浏览器则被删除,下面的方法是将cookie存储在硬盘上。

c.setMaxAge(60*60*24);//一天,如果设置为0则是删除该cookie

3、 将cookie放入到HTTP响应报头,可以使用HttpServletResponse的addCookie方法,此方法不修改之前指定的Set-Cookie报头,而是创建新的报头。

response.addCookie(c);

       注意:设置cookie的步骤为创建cookie对象,设置最大时效,将cookie放入响应报头,即发送到客户程序,记住一定要将cookie发送到客户程序


三、从客户端读取cookie

1、 调用HttpServletRequest的getCookies得到一个Cookie对象的数组

2、 对数组进行循环,调用cookie的getName方法,获取具体的cookie的值

 

Cookie[] cookies = request.getCookies();
if(cookies != null){
for(int i=0;i<cookies.length;i++){
        Cookie c = cookies[i];
        if(“userId”.equals(c.getName())){
        System.out.println(c.getValue());
}
}
}
 

 


四、cookie的常用方法

1、 setComment()/getComment():指定或查找与该cookie相关的注释

2、 setDomain()/getDomain():设置或读取该cookie适用的域

3、 setMaxAge()/getMaxAge():操作cookie保留的时间,多长时间后过期

4、 getName():读取cookie的名称

5、 setPath()/getPath():设置或取得cookie适用的路径

cookie.setPath(“/”);指定服务器的所有页面都应该收到该cookie

6、 setSource()/getSource():指定cookie是否只能通过加密连接(SSL)

默认false,表示cookie适用所有连接

7、 setValue()/getValue():指定或获取cookie的值


五、下面给出一个cookie的最简单的使用例子cookie.jsp:

 

<%@ page contentType="text/html; charset=GB2312" import="java.util.*"%>
<%@ page import="javax.servlet.http.Cookie" %>
<html>
<head>
<title>cookie 用户登录次数</title>
</head>
<body>
<center>
<font size = 5 color = blue>cookie 用户登录次数</font>
</center>
<hr><p></p>
<%
Cookie temp = null;
Cookie[] cookies = request.getCookies();
int cookielen = 0;
if(cookies != null)
	cookielen = cookies.length;
int count=1;
//取得cookie变数阵列的长度
 
if(cookielen != 0) //判断是否成功取得cookie资料
{     
       for (int i = 0; i < cookielen; i++)
       {                   temp = cookies[i]; //取得cookies数组中的Cookie变量
                            
              if (temp.getName().equals("accessCount"))
              { 
               count=Integer.parseInt(temp.getValue());//获取登录页面次数
              }
       }
}
 %>
 通过这个浏览器<font color = blue></font>
 您的登录次数是<font color = red>
   <%= count %>
   </font><br>
 <%
  //下次显示会多一次
Cookie accessCount = new Cookie("accessCount", String.valueOf(count+1));
 accessCount.setMaxAge(60);//这个只是设置它的生命周期,也就是说,当你设置了这个cookie的有效期为1分钟时,你关了浏览器它不是由浏览器来监视cookie文件夹,发现过期就删除去,而是当用户下去请求该站点时,站点会分析出这个cookie文件内容已过期,就会发一个新的文件内容到客户端,并请求删除或覆盖原来过期的cookie文件,然后浏览器才会执行删除操作,再访问原cookie文件时就找不到了
 response.addCookie(accessCount); //将更新后的数据存入cookie变数加入cookie中,存在客户端
%>
</body>
</html>

 

放入服务器,进行访问时,同时看一下你的浏览器存放cookie文件所在的文件夹,就可以看到访问期时,会产生一个cookie文件,当你不设置setMaxAge时或将它值设置为0时,就不会产生cookie文件,没有设置setMaxAge属性

cookie信息会存放在浏览器中,而设置了setMaxAge属性则会存放在磁盘中。

 

再转:


各位高手,建立的cookies,但是删除的时候失败,想问一下应该怎样做。我在一个test文件夹下的cookies.jsp里建立
了两个cookies,主要代码如下:

 

 

<%
Cookie sp=new Cookie("spread",spread);
Cookie spn=new Cookie("spreadN",spreadN);
sp.setMaxAge(360*24*60*60);
spn.setMaxAge(360*24*60*60);
sp.setPath("/");
spn.setPath("/");
response.addCookie(sp);
response.addCookie(spn);
%>
 

 


然后在同一个目录下用一个logout.jsp文件,想删除cookies,主要代码如下:

 

 

 

<%
Cookie sp=new Cookie("spread",null);
Cookie spn=new Cookie("spreadN",null);
sp.setMaxAge(0);
spn.setMaxAge(0);
sp.setPath("/");
spn.setPath("/");
response.addCookie(sp);
response.addCookie(spn);
%>

 但是删除不了,请求各位帮忙,解决了可加高分。

 

最佳答案

修改logout.jsp文件如下

 

 

<% 
Cookie[] cookies=request.getCookies();
 if(cookies!=null)   
 {   
     for(int   i=0;i<cookies.length;i++){
     Cookie sp = cookies[i].getName();
     if(sp.equals("spreadN"))   
      {   
          cookies[i].setMaxAge(0);   
          response.addCookie(cookies[i]);   
      }   
      if(sp.equals("spread"))   
      {   
          cookies[i].setMaxAge(0);   
          response.addCookie(cookies[i]);     
      } 
    }    
} 
   

%> 
 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值