Cookie

简介

  1. Cookie是服务器通知客户端保存键值对的一种技术。
  2. 客户端有了 Cookie 后,每次请求都发送给服务器。
  3. 每个Cookie的大小不能超过4kb

创建Cookie

protected void createCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //1.创建cookie对象
    Cookie cookie = new Cookie("key", "value");
    //2.通知客户端保存
    response.addCookie(cookie);

    //乱码
    response.setContentType("text/html; charset=utf-8");

    response.getWriter().println("Cookie 创建成功!");
}

获取Cookie

protected void getCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //得到所有的cookie
    Cookie[] cookies = request.getCookies();
    //遍历
    for (Cookie cookie:cookies
         ) {
        response.getWriter().println( "Cookie[name=" + cookie.getName() +",value=" + cookie.getValue() + "]");
    }

    //查找指定name的cookie
    Cookie iWantCookie = null;
    for(Cookie cookie : cookies){
        if("key".equals(cookie.getName())){
            iWantCookie = cookie;
            break;
        }
    }
    if(iWantCookie != null)
        response.getWriter().write("找到name为key的cookie!");
}

修改Cookie值

protected void updateCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    /*方式一*/
    //        //1.创建一个新的和原cookie 的key 一样的cookie
    //        Cookie cookie = new Cookie("key", "newValue");
    //        //2.通知客户端保存修改
    //        response.addCookie(cookie);

    /*方式二*/
    //1.查找cookie
    Cookie findCookie = CookieUtils.getCookie("key", request.getCookies());
    if(findCookie != null){
        findCookie.setValue("newValue");
        response.addCookie(findCookie);
    }
    response.getWriter().write("name为key的cookie已经修改!");
}

Cookie 存活控制

Cookie的生命控制指的是如何管理Cookie什么时候被销毁(删除)

setMaxage()

  • 正数,表示在指定的秒数后过期
  • 负数,表示浏览器一关,Cookie就会被删除(默认值是-1)
  • 零,表示马上删除Cookie
protected void defaultLife(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Cookie cookie = new Cookie("defaultCookie", "value");
    //      负数,表示浏览器一关,Cookie就会被删除(默认值是-1)
    cookie.setMaxAge(-1);
    response.addCookie(cookie);
}

protected void deleteNow(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //找到要删除的cookie
    Cookie cookie = CookieUtils.getCookie("key", request.getCookies());

    if (cookie != null) {
        //      零,表示马上删除Cookie
        cookie.setMaxAge(0);
        response.addCookie(cookie);
        response.getWriter().write("name为key的cookie已被删除!");
    }
}

protected void life(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Cookie cookie = new Cookie("life3600s", "value");
    cookie.setMaxAge(60 * 60);
    response.addCookie(cookie);

    response.getWriter().write("创建了一个存活一小时的Cookie");
}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值