印度阿三17 / 开发 / Java基础系列(基础):Java使用Cookie增...

分享

   

Java基础系列(基础):Java使用Cookie增删改查操作!

2019-07-06  印度阿三17

什么是Cookie?

Cookie是由W3C组织提出,最早由NetScape社区发展的一种机制。

Cookie是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个cookie。

Cookie的作用就是用于解决"如何记录客户端的用户信息":

  • 当用户访问web页面时,他的名字可以记录在Cookie中。

  • 在用户下一次访问该页面时,可以在Cookie中读取用户访问记录。

Cookie实际上是一小段文本信息(上限为4kb)。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器可以把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务还可以根据需要修改Cookie的内容。


Cookie的属性

属性名描述
nameCookie的名称,Cookie一旦创建,名称便不可更改
valueCookie的值,如果值为Unicode字符,需要为字符编码。如果为二进制数据,则需要使用BASE64编码
maxAgeCookie失效的时间,单位秒。如果为整数,则该Cookie在maxAge秒后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为-1。
secure该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。
pathCookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。
domain可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”。
Comment该Cookie的用处说明,浏览器显示Cookie信息的时候显示该说明。
versionCookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范

获取所有Cookie
public static Cookie[] getCookies(HttpServletRequest request) {
    return request.getCookies();
}

获取cookie很简单,直接从request中获取即可。


根据名称获取指定Cookie
public static Cookie getCookieByName(HttpServletRequest request, String name) {
    if (StringUtils.isBlank(name)) {
        return null;
    }

    Cookie[] cookies = getCookies(request);
    if (null != cookies) {
        for (Cookie cookie : cookies) {
            if (name.equals(cookie.getName())) {
                return cookie;
            }
        }
    }
    return null;
}

从所有cookie中循环判断进行获取指定cookie。


添加Cookie
public static boolean addCookie(HttpServletResponse response, String name, String value, int maxAge) {
    if (StringUtils.isBlank(name) || StringUtils.isBlank(value)) {
        return false;
    }

    Cookie cookie = new Cookie(name.trim(), value.trim());
    if (maxAge <= 0) {
        maxAge = Integer.MAX_VALUE;
    }

    cookie.setMaxAge(maxAge);
    cookie.setPath("/");
    response.addCookie(cookie);
    return true;
}

这个添加很简单。


删除Cookie
public static boolean removeCookie(HttpServletRequest request, HttpServletResponse response, String name) {
    if (StringUtils.isBlank(name)) {
        return false;
    }

    Cookie[] cookies = getCookies(request);
    if (null != cookies) 
        for (Cookie cookie : cookies) {
            if (name.equals(cookie.getName())) {
                cookie.setValue(null);
                cookie.setMaxAge(0);
                cookie.setPath("/");
                response.addCookie(cookie);
        	     return true;
            }
        }
    }
    return false;
}

删除cookie,把 value设置为null,把 max-age设置为0就行了。


到这里:Java基础系列(基础):Java使用Cookie增删改查操作!分享完毕了,快去试试吧!


最后

  • 编辑操作和删除操作一样,但是需要注意的是修改、删除Cookie时,除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多