Cookie对象

Cookie对象

Cookie的创建与发送

/**
 * Cookie的创建与发送
 */
@WebServlet("/cook01")
public class Cookie01 extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 得到Cookie对象
        Cookie cookie = new Cookie("name","admin");
        // 发送cookie(将cookie对象响应给客户端)
        response.addCookie(cookie);

        // 得到Cookie对象
        Cookie cookie02 = new Cookie("pwd","123456");
        // 发送cookie(将cookie对象响应给客户端)
        response.addCookie(cookie02);

    }
}

Cookie的获取
获取所有的cookie对象,返回cookie数组
request.getCookies();//@WebServlet("/cook02")

@WebServlet(value = {"/cook02","/cook"})
public class Cookie02 extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 获取所有的Cookie对象
        Cookie[] cookies = request.getCookies();
        // 判断后遍历
        if (cookies != null && cookies.length > 0) {
            for (Cookie cookie: cookies) {
                // 获取时通过 URLDecoder.decode()来进行解码
                System.out.println("name:" + URLDecoder.decode(cookie.getName()));
                System.out.println("value:" + URLDecoder.decode(cookie.getValue()));

                // 获取指定name的cookie对象
                if ("name".equals(cookie.getName())) {
                    System.out.println("值为:" + cookie.getValue());
                }
            }
        }

Cookie的失效时间
cookie默认是关闭浏览器失效(与服务器是否关闭无关)
通过maxAge设置cookie的失效时间

  1. 正整数
  2. 负整数
    表示cookie只在浏览器中存活,浏览器关闭即失效.默认值是-1

  3. 表示删除cookie
@WebServlet("/cook03")
public class Cookie03 extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 得到Cookie对象
        Cookie cookie = new Cookie("uname1","zhangsan");

        // 正整数:表示cookie存活指定秒数。
        // cookie.setMaxAge(20);
        // 设置7天失效
        cookie.setMaxAge(7*24*60*60);

        // 发送cookie(将cookie对象响应给客户端)
        response.addCookie(cookie);


        // 得到Cookie对象
        Cookie cookie02 = new Cookie("uname2","lisi");
        // 负整数:表示cookie只在浏览器中存活,浏览器关闭即失效.默认值是-1
        cookie02.setMaxAge(-1);
        // 发送cookie(将cookie对象响应给客户端)
        response.addCookie(cookie02);


        // 得到Cookie对象
        Cookie cookie03 = new Cookie("uname3","wangwu");
        // 零:表示即刻删除
        cookie03.setMaxAge(0);
        // 发送cookie(将cookie对象响应给客户端)
        response.addCookie(cookie03);



        // 删除已有的cookie对象
        Cookie cook = new Cookie("name",null);
        cook.setMaxAge(0);
        response.addCookie(cook);



    }

Cookie的注意点

  1. Cookie只在当前浏览器中有效,不跨浏览器(不跨电脑)
  2. Cookie同名问题
    在cookie的domian与path相同时,出现相同的name会覆盖
  3. Cookie的存储数量问题
    不同的浏览器存放cookie的数量有限制,同域名下cookie的数量有限制。
  4. Cookie存中文问题
    存中文会报错。如果有中文则通过 URLEncoder.encode()来进行编码,获取时通过 URLDecoder.decode()来进行解码
@WebServlet("/cook04")
public class Cookie04 extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 通过 URLEncoder.encode()来进行编码
        String name = URLEncoder.encode("名字");
        String value = URLEncoder.encode("测试");
        Cookie cookie = new Cookie(name,value);
        response.addCookie(cookie);


    }
}

Cookie的路径

  1. 在当前项目下的资源可以获取
  2. 在当前服务器下的资源可以获取 设置路径为"/"
  3. 在指定项目下的资源可以访问
  4. 在指定路径的资源可以访问
    总结:当访问的路径中包含cookie的path时,就能获取到当前cookie对象
@WebServlet("/cook05")
public class Cookie05 extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 1. 在当前项目下的资源可以获取
        Cookie cookie01 = new Cookie("a1","aa");
        cookie01.setPath("/s02");
        response.addCookie(cookie01);

        // 2. 在当前服务器下的资源可以获取   设置路径为"/"
        Cookie cookie02 = new Cookie("a2","bb");
        cookie02.setPath("/");
        response.addCookie(cookie02);

        // 3. 在指定项目下的资源可以访问
        Cookie cookie03 = new Cookie("a3","cc");
        cookie03.setPath("/s01");
        response.addCookie(cookie03);


        //  4. 在指定路径的资源可以访问
        Cookie cookie04 = new Cookie("a4","dd");
        cookie04.setPath("/s02/cook");
        response.addCookie(cookie04);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值