对Cookie对象的了解

先了解Cookie

        Cookie是浏览器提供的一种技术,通过服务器的程序能将一些只须保存在客户端,或者在客户端进行处理的数据,放在本地的计算机上,不需要通过网络传输,因而提高网页处理的效率,并且能够减少服务器的负载,但是由于Cookie 是服务器端保存在客户端的信息,所以其安全性也是很差的。例如常见的记住密码则可以通过Cookie来实现。

        有一个专门操作Cookie的类javax.servlet.http.Cookie。随着服务器端的响应发送给客户端,保存在浏览器。当下次再访问服务器时把Cookie再带回服务器。

        Cookie的格式:键值对用“="链接,多个键值对间通过";“隔开。

       Cookie的创建以及响应

        //Cookie的创建
        Cookie cookie = new Cookie("uname","zhangsan");
        //Cookie的响应
        response.addCookie(cookie);

        由于Cookie没有提供无参构造,所以只能通过实例化Cookie对象直接把值传进去,传进去还需要将其发送出去(Cookie的相应).

        Cookie的遍历          它的缺点就是不能获取单个Cookie(一下全部就获取所有的Cookie,想要你需要的Cookie还需要进行简单的判断)   

    //获取cookie数组
        Cookie[] cookies = request.getCookies();//获取Cookie数组
        if (cookies!=null && cookies.length>0){//非空判断
            for (Cookie cookie : cookies) {
                System.out.println(cookie.getName()+":"+cookie.getValue());
            }
        }

        Cookie的生命周期(到期时间)

                        1.到期时间:负整数(默认值-1.表示只在浏览器内存中存活,关闭浏览器失效)

                        2.到期时间:正整数(表示存活指定秒数,会将数据存在磁盘中)

                        3.到期时间:零(表示删除cookie)

        代码演示:      

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/c03")
public class cookie03 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       /*到期时间:负整数(默认值-1.表示只在浏览器内存中存活,关闭浏览器失效)*/
        Cookie cookie1 = new Cookie("uname1","lisi");
        cookie1.setMaxAge(-1);
        response.addCookie(cookie1);
        /*到期时间:正整数(表示存活指定秒数,会将数据存在磁盘中)*/
        Cookie cookie2 = new Cookie("uname2","wangwu");
        cookie2.setMaxAge(30);
        response.addCookie(cookie2);
        /*到期时间:零(表示删除cookie)*/
        Cookie cookie3 = new Cookie("uname3","zhaoliu");
        cookie3.setMaxAge(0);
        response.addCookie(cookie3);
    }
}

        Cookie的注意点

                        1.Cookie只在当前浏览器有效(不跨浏览器和电脑)

                        2.Cookie不能存中文

                                如果一定要存中文,则需要通过URLEncoder.encode()方法进行编码,获取时通过URLDecoder.decode()方法进行解码

                        3.如果出现同名的Cookie对象,则会覆盖

                        4.Cookie的存储数量是有上限的,不同浏览器的上限不同。Cookie存储的大小是有限的,在4kb左右。

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/c04")
public class cookie04 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //Cookie存中文
        String name = "姓名";
        String value = "张三";
        Cookie cookie = new Cookie(name,value);
        response.addCookie(cookie);
    }
}

               结果会报错的

   

 此时我们只需要如下操作即可

        

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;

@WebServlet("/c04")
public class cookie04 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //Cookie存中文
        String name = "姓名";
        String value = "张三";
       //将中文通过URLEncoder进行编码
        name = URLEncoder.encode(name);
        value = URLEncoder.encode(value);
        //创建Cookie
        Cookie cookie = new Cookie(name,value);
        response.addCookie(cookie);
        //获取Cookie时通过URLDecoder解码
        Cookie[] cookies = request.getCookies();
        if (cookies != null && cookies.length > 0){
            for (Cookie cook : cookies) {
                //解码
                System.out.println(URLDecoder.decode(cook.getName()));
                System.out.println(URLDecoder.decode(cook.getValue()));
            }
        }
    }
}

        结果如下:

                没有报错,但是我们的中文会以图的方式存储起来。

                看看此时的控制台,会发现中文可以输出,说明我们 如果一定要存中文,则需要通过URLEncoder.encode()方法进行编码,获取时通过URLDecoder.decode()方法进行解码。

                

         Cookie的路径

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于HTTP Cookie的管理,可以使用Cookie管理器来处理。Cookie是Web服务器发送给浏览器并存储在用户计算机上的小型文本文件,用于跟踪和存储用户的信息。 在开发中,可以使用各种编程语言和框架来处理Cookie。以下是一些常见的方法: 1. 在后端使用服务器端编程语言(如Python、Java、PHP等)的相关库和框架,通过设置响应头部来设置和管理Cookie。这可以通过HTTP请求和响应头中的Set-Cookie字段来实现。 2. 在前端使用JavaScript来处理Cookie。可以使用document.cookie对象来读取、设置和删除Cookie。例如,通过document.cookie = "key=value"来设置Cookie,通过document.cookie = "key=; expires=Thu, 01 Jan 1970 00:00:00 UTC"来删除Cookie。 3. 在框架和库中使用Cookie管理器。许多流行的Web开发框架和库(如Django、Express、Flask等)都提供了内置的Cookie管理功能,使开发者能够轻松地设置、读取和删除Cookie。 使用Cookie管理器可以实现以下功能: - 设置和更改Cookie的值和过期时间。 - 读取和获取Cookie的值。 - 删除Cookie。 - 处理Cookie的安全性,例如设置Secure和HttpOnly标志以提高安全性。 请注意,Cookie管理器通常是特定于编程语言、框架或库的。具体的实现方式可能会有所不同,建议查阅相关文档或官方文档以了解更多详细信息和用法示例。 希望这些信息能对您有所帮助!如果您还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值