Cookie

什么是Cookie?

Cookie是服务器通知客户端保存键值对的一种技术

客户端有了Cookie后,每次请求都发送给服务器

每个Cookie的大小不能超过4kb

 

Cookie的创建

//1、创建Cookie对象
Cookie cookie1 = new Cookie("key1", "value1");
//2、通知客户端保存Cookie
resp.addCookie(cookie1);

  

注意:可一次创建多个Cookie,响应头中会出现对应数量的Set-Cookie

//1、创建Cookie对象
Cookie cookie2 = new Cookie("key2", "value2");
//2、通知客户端保存Cookie
resp.addCookie(cookie2);

//1、创建Cookie对象
Cookie cookie3 = new Cookie("key3", "value3");
//2、通知客户端保存Cookie
resp.addCookie(cookie3);

  

 

 

 

 

Cookie的获取

Cookie[] cookies = req.getCookies();
for(Cookie cookie : cookies) {
	System.out.println("key:"+cookie.getName);         //getName方法返回Cookie的key
	System.out.println("value:"+cookie.getValue);		//getValue方法返回Cookie的value
}

 

 

封装工具类获取指定key的Cookie

package com.tang.web.servlet.utils;

import javax.servlet.http.Cookie;

public class CookieUtils {
    /**
     * 查找指定key的Cookie
     * @param cookies
     * @param key
     * @return
     */
    public static Cookie getCookie(Cookie[] cookies, String key) {
        if (key == null || cookies == null || cookies.length == 0) {
            return null;
        }
        for (Cookie cookie : cookies) {
            if (key.equals(cookie.getName())) {
                return cookie;
            }
        }

        return null;
    }
}

  

Cookie生命控制

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

setMaxAge(int time)

  正数:表示在指定秒后删除

  负数:表示浏览器关闭时删除(默认值是-1)

  0:表示马上删除

 

Cookie有效路径path

Cookie的path属性可以有效过滤哪些Cookie发送给服务器,哪些不发。path属性是通过请求的地址来进行有效的过滤

cookie.setPath(String url)

 

CookieA  path=/工程路径

CookieB  path=/工程路径/abc

请求地址如下:

  http://ip:port/工程路径/a.html

    CookieA发送

    CookieB不发送

  http://ip:port/工程路径/abc/a.html

    CookieA发送

    CookieB发送

 

 

免用户名登录

 

posted @ 2021-04-09 10:43  455994206  阅读(65)  评论(0)    收藏  举报