cookies简单使用记录

java存入cookies
Cookie cookie = new Cookie("name", value);
response.addCookie(cookie);

拿微信开发,一堆页面都要引入js方法,麻烦的很,本来以为存一次不关微信就一直存在,发现跳到第二个页面就没有cookies了,想来想去还是挺奇怪。

java取出cookies
/**
 * 根据名字获取cookie
 */
public static String getCookieByName(HttpServletRequest request,String name){
    Map<String,Cookie> cookieMap = ReadCookieMap(request);
    if(cookieMap.containsKey(name)){
        Cookie cookie = (Cookie)cookieMap.get(name);
        return cookie.getValue();
    }else{
        LOG.error("cookies内的openId为空");
        return null;
    }
}

cookies是多个值,一般都是循环

/**
 * 将cookie封装到Map里面
 */
private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){
    Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
    Cookie[] cookies = request.getCookies();
    if(null!=cookies){
        for(Cookie cookie : cookies){
            cookieMap.put(cookie.getName(), cookie);
        }
    }
    return cookieMap;
}
js获得cookies
function getCookie(c_name){
    //先查询cookie是否为空
    if (document.cookie.length>0){
        //通过String对象的indexOf()来检查这个cookie是否存在,不存在就为 -1
        c_start=document.cookie.indexOf(c_name + "=")    
        if (c_start!=-1){ 
            //获取cookie值的开始位置
            c_start=c_start + c_name.length+1  
            //得到值的结束位置。因为需要考虑是否是最后一项,所以通过";"号是否存在来判断
            c_end=document.cookie.indexOf(";",c_start)  
            if (c_end==-1) 
                c_end=document.cookie.length  
            //通过substring()得到了值
            return unescape(document.cookie.substring(c_start,c_end))  
        } 
    }
    return ""
}
按天设置cookies
function setCookie(c_name, value, expiredays){
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

使用方法:setCookie(‘username’,’Darren’,30)

cookie域概念,这里参考了一个blog

路径能解决在同一个域下访问 cookie 的问题,咱们接着说 cookie 实现同域之间访问的问题。语法如下:

document.cookie = "name=value;path=path;domain=domain"

红色的domain就是设置的 cookie 域的值。
例如 “www.qq.com” 与 “sports.qq.com” 公用一个关联的域名”qq.com”,我们如果想让 “sports.qq.com” 下的cookie被 “www.qq.com” 访问,我们就需要用到 cookie 的domain属性,并且需要把path属性设置为 “/”。例:

document.cookie = "username=Darren;path=/;domain=qq.com"

注:一定的是同域之间的访问,不能把domain的值设置成非主域的域名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值