谈Servlet的Cookie对象的详情

本文详细介绍了Cookie在Web开发中的作用,它是用于维护客户端与服务器会话状态的对象。Cookie的特点包括存储数据的限制、结构和浏览器的处理方式。创建和获取Cookie的方法也在文中阐述,同时讲解了Cookie的状态,包括临时状态和持久化状态的管理。此外,还提及了如何通过setMaxAge()方法设置Cookie的生命周期。
摘要由CSDN通过智能技术生成

1.Cookie的作用

     维护客户端浏览器与服务端的会话状态的一个对象。由于HTTP协议是一个无状态的协议,所以服务端并不会记录客户端浏览器的访问状态,但是有时候我们是需要服务端来记录客户端浏览器的访问状态的,这个时候就需要用到会话状态的维持。以上是官方回答,简单点来说就是Cookie对象是基于域名来记录,所以该对象就是用来记录客户端有没有访问过该域名。举个例子来说,假如这里有一家饭店举行开业活动,凡是来吃饭的顾客消费满1000元即送大礼包一个,可以累计消费,当客人第一次来消费没满1000元,那么饭店会送给客人一张卡片,记录该客人此次消费的金额,当客人下次消费的时候,发现卡片上累计消费达到1000元即获取大礼包。该例中客人就相当于客户端浏览器,饭店就是服务器,而卡片就是Cookie对象(所以Cookie是有服务端创建,发送给客户端)。

2.Cookie对象的特点:

(1)Cookie对象中只能使用字符串来存储数据  (2)Cookie对象中存储数据使用键值对结构存储

(3)Cookie对象中存储数据有大小限制     (4)Cookie存储数据中不支持中文,但Servlet4.0后支持

  (5)  Cookie对象分为状态cookie和持久化Cookie (6)浏览器在保存同一个域名下的cookie的数

量是有限的    (7)浏览器每次请求的时候会把与这次请求域名相关的Cookie都放在请求中发送给

服务器

3.Cookie对象的创建

//创建一个cookie对象
        Cookie cookie=new Cookie("name","xxxxx");
//用响应对象把cookie对象返回给客户端
        resp.addCookie(cookie);

4.获取Cookie对象中的数据

   这里首先说下Cookie对象的整个流程,其实当客户端浏览器第一次请求服务端的时候,服务端会创建与这次请求域名相关的Cookie对象(可能会很多),然后利用respone响应对象将Cookie对象返回给客户端,那么客户端下次在访问该域名的时候,就会把与该域名相关的Cookie都放在请求中发送给服务端。所以这里可以根据请求对象中getCookie()方法获取Cookie对象,然后在获取Cookie对象中的数据。

//在请求中获取cookie对象
        Cookie[] cookies = req.getCookies();
for (int i=0;i<cookies.length;i++){
            Cookie cookie=cookies[i];
            out.println("Name:"+cookie.getName()+"Value:"+cookie.getValue()+"</br>");
        }

由于请求中会存放很多个Cookie对象,所以这里进行遍历每一个Cookie对象,获取数据。

5.Cookie对象的状态

    Cookie对象可以根据状态分为状态Cookie和持久化Cookie

    状态Cookie:客户端会把返回的Cookie对象存放在浏览器的内存中,如果浏览器关闭,那么Cookie对象也会销毁。

    持久化Cookie:客户端会对Cookie做持久化处理,基于文件的形式保存在系统的指定目录中。

    Cookie对象创建后其实默认为状态Cookie,但是可以通过人为修改为持久化Cookie,那就是为Cookie对象通过setMaxAge()方法设置失效时间,单位为秒,一旦设置了失效时间,那么Cookie对象就为持久化了,当时间到达,文件删除。

 Cookie cookie=new Cookie("first","first");
            cookie.setMaxAge(60);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值