Cookie的使用

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

 

1、RepeatServlet.java

public class RepeatServlet extends HttpServlet {

 

    public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

        boolean newa = true;

        Cookie[] cookies = request.getCookies();

        if(cookies != null){

           for (int i = 0; i < cookies.length; i++) {

               Cookie c = cookies[i];

               if ((c.getName().equals("repeat")) && (c.getValue().equals("true"))) {

                  newa = false;

                   break;

               }

           }

       }

      

        String title;

       if (newa) {

           Cookie rtn = new Cookie("repeat"," true");

           rtn.setMaxAge(60*60*24*365);

           response.addCookie(rtn);

           title = "First Welcome";

       } else {

           title = "Welcom Back";

       }

      

        response.setContentType("text/html");

        PrintWriter out = response.getWriter();

        out.println("<html><body><h3>");

        out.println(title);

        out.println("</h3></body></html>");

    }

 

    public void doPose(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

        doGet(request,response);

    }

}

 

2、CookieUtil.java

public class CookieUtil{

 

    public static String getValue(HttpServletRequest request,String cName,String value){

        Cookie[] cookies = request.getCookies();

        if(cookies != null){

           for (int i = 0; i < cookies.length; i++) {

               Cookie cookie = cookies[i];

               if (cName.equals(cookie.getName())) {

                   return cookie.getValue();

               }

           }

       }

        return value;

    }

   

    public static Cookie getCookie(HttpServletRequest request,String cName){

        Cookie[] cookies = request.getCookies();

        if(cookies != null){

           for (int i = 0; i < cookies.length; i++) {

               Cookie cookie = cookies[i];

               if (cName.equals(cookie.getName())) {

                   return cookie;

               }

           }

       }

        return null;

    }

}

 

3、AccessCountServle.java 记录访问数

public class AccessCountServlet extends HttpServlet {

 

    public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

      

        String acount = CookieUtil.getValue(request, "acc", "1");

       int count = Integer.parseInt(acount);

        Cookie cookie = new Cookie("acc",String.valueOf(count+1));

        cookie.setMaxAge(60*60*24*365);

        response.addCookie(cookie);

      

        response.setContentType("text/html");

        PrintWriter out = response.getWriter();

        out.println("<html><body>Hello,the number is<h3>");

        out.println(count);

        out.println("</h3></body></html>");

    }

   

    public void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

        doGet(request,response);

    }

}

 

=======================================================================================================================

一:存在两种类型的cookie:
1>会话cookie (session cookie)
        不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,   cookie就消失了。
        生命期为浏览器会话期。
        一般不保存在硬盘上而是保存在内存里。
2>持久性cookie (persistent cookies)
        设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。
          保存在用户硬盘上面,同一浏览器可以获取。

 

 

 

使用
response.cookies("").expires=dateadd('H',1,now())z
这个设置为一小时
dateadd("n",30,now()) 得到分钟
dateadd("S",30,now()) 得到秒

 

 

 

默认cookies失效时间是直到关闭浏览器,cookies失效,也可以指定cookies时间。

Response.Cookies("user_name").Expires=Date+1 '指定cookie保存时间

保留COOKIES一个小时

Response.Cookies("MyCookie").Expires= (now()+1/24)
Response.Cookies("MyCookie").Expires = DateAdd("h", 1, Now())

设置60个月以后过期

Response.Cookies("CookieName").Expires=DateAdd("m",60,now())

Response.Cookies("User").expires=second()+7

在expires后面定义的时间可以用时间函数代替

例如:date()+7就表示在今天的时间上加上7天,而second()+7则是7秒了。
Response.Cookies("字段名").expires=时间函数+N,
例如: Response.Cookies("name2").expires=date+1,表示Cookies保存1天,
再比如: Response.Cookies("name2").expires=Hour+8,表示Cookies保存8小时。
这种方法我测试过不行(在2003server,iis6.0中),不管second后面有无加(),
访问时会出现500错误(还是无法显示网页?忘了)。
织梦尤文:这里的时间累加建议还是使用DateAdd函数,比如我们要累加一小时,
则使用: Response.Cookies("baidooglecom").expires = DateAdd("h", 1, Now()) 30分钟:
Response.Cookies("CookieName").Expires=DateAdd("n",30,now()) dateadd("S",30,now())
得到秒 Expires 指定 cookie 的过期日期。为了在会话结束后将 cookie 存储在客户端磁盘上,
或在许多时候,我们希望能更长时间地在访问者的计算机上保存cookie。必须设置该日期。
若此项属性的设置未超过当前日期,

则在任务结束后 cookie 将到期。 cookie的使用到期时间为“2010年1月1日”:

Response.Cookies("CookieName").Expires=#January 01, 2010# cookie的过期时间为“cookie的创建时间+365天”:Response.Cookies("CookieName").Expires=Date+365 但最好不要随便写 Response.Cookies("CookieName").Expires=Date,
这样页面之间的调用时值会为空。

Function killip(cook,cooktime) '封杀ip,同一个ip不能多次执行,( cookies名字,cookies时间) killip("queip",30)
cook = checkstr(cook)
If Not isint(cooktime) Then
response.write "cooktime is not int"
Exit function
End If
If request.Cookies(cook)&"" <> "" And request.Cookies(cook)&"" = getip() Then
execScript "alert('抱歉,同一个IP不能多次操作。');location.href='/';"
response.End
End If
response.cookies(cook) = getip()
Response.Cookies(cook).Expires=DateAdd("n",cooktime,now()) '多少分种。 dateadd("S",30,now()) 30秒。 date+1 1天。
End Function

Call killip("queip",30)

 

 

 

Cookies在ASP中的最常用的方法,

1.如何写入Cookies?
Response.Cookies("字段名")=变量或字符串,例如:
Response.Cookies("name2")="Dingdang"

2.如何设置Cookies时间?
Response.Cookies("字段名").expires=时间函数+N,例如:
Response.Cookies("name2").expires=date+1,表示Cookies保存1天,再比如:
Response.Cookies("name2").expires=Hour+8,表示Cookies保存8小时。

3.在以往的ASP教程中,很少有介绍Cookies退出的方法。在“退出”这个ASP页中可以这样写:
Response.Cookies("字段名")=""
之后,在客户端的浏览器就清除了Cookies,并且Cookies文件会消失。注意有多少个字段,就要写多少句来清除。

4.如何读取Cookies?
变量名=Request.Cookies("字段名"),例如:
name2=Request.Cookies("name2")
如果网页中写入这句,则会显示“Dingdang”。
也可以这样直接读取Cookies,

Cookies是属于Session对象的一种。但有不同,Cookies不会占服务器资源;而“Session”则会占用服务器资源。所以,尽量不要使用Session,而使用Cookies。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值