美文网首页
Java Cookie常用方法介绍

Java Cookie常用方法介绍

作者: 勿念及时雨 | 来源:发表于2019-12-05 18:50 被阅读0次

    什么是Cookie?

    Cookie翻译成中文是小甜点,小饼干的意思。
    Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端,客户端再下一次访问服务器端时,服务器端可以获取到客户端Cookie缓存文件。
    Cookie是由服务器端创建的,然后由服务器端发送给客户端,客户端以键值对形式存储Cookie,并标注Cookie的来源。客户端再次访问服务器端时,存储的Cookie会保存在请求协议中,服务器端可以获取上次存储的缓存文件内容。
    综上所述,Cookie有如下几个特点:

    • Cookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据。
    • 首先由服务器通过响应头把Cookie传输给客户端,客户端会将Cookie保存起来。
    • 当客户端再次请求同一服务器时,客户端会在请求头中添加该服务器保存的Cookie,发送给服务器。
    • Cookie就是服务器保存在客户端的数据。
    • Cookie就是一个键值对。

    Cookie规范

    Http协议提供了有关Cookie的规范,如今市场上出现了大量的浏览器,一些浏览器对该Cookie规范进行了一些扩展,例如每个Cookie的大小为8KB,最多可保存500个Cookie等,但Cookie缓存文件不会占满硬盘空间。
    Http协议的Cookie规范如下:

    • Cookie通过请求头和响应头在服务器与客户端之间传输。
    • Cookie大小上限为4KB。
    • 一个服务器最多在客户端浏览器上保存20个Cookie。
    • 一个浏览器最多保存300个Cookie。

    Cookie类的常用方法

    在JavaEE中提供了javax.servlet.http.Cookie类,该类提供了获取Cookie与设置Cookie的相关方法。
    构造方法

    Cookie(String name, String value)
    

    代码示例:向客户端响应Cookies

    // 创建Cookie实例对象
    Cookie cookie = new Cookie("user_token", new Date().toString());
    // 将Cookie实例对象添加到Response对象中
    response.addCookie(cookie);
    

    获取Cookie的名称

    getName()
    

    代码示例:读取请求中的Cookie

    //通过Request对象获取请求中的Cookies
    Cookie[] cookies = request.getCookies();
    //判断请求中的Cookies是否存在
    if(cookies != null){
        //遍历所有Cookies
        for (Cookie cookie : cookies) {
            // 获取每一个Cookies的名称
            String name = cookie.getName();
            // 判断是否存在一个名为"user_token"的Cookie
            if(name.equals("user_token")){
                // 如果存在,打印到控制台中
                System.out.println("user_token:"+cookie.getValue());
            }
        }
    }
    

    设置Cookie的值

    setValue(String value)
    

    获取Cookie的值

    getValue()
    

    设置Cookie的有效访问路径

    setPath(String path)    
    

    代码示例:设置Cookie的有效访问路径为“/main”

    // 创建Cookie实例对象
    Cookie cookie = new Cookie("user_token", new Date().toString());
    // 设置Cookie的有效访问路径
    cookie.setPath("/main");
    // 将Cookie实例对象添加到Response对象中
    response.addCookie(cookie);
    

    获取Cookie的有效访问路径

    getPath()
    

    设置Cookie的有效域名

    setDomain(String pattern)
    

    代码示例:设置Cookies的有效域名为“.wunian.com”

    // 创建Cookie实例对象
    Cookie cookie = new Cookie("user_token", new Date().toString());
    // 设置Cookie的有效域名
    cookie.setDomain(".wunian.com");
    // 将Cookie实例对象添加到Response对象中
    response.addCookie(cookie);
    

    设置Cookie在浏览器上保持的时间,以秒为单位

    setMaxAge(int expiry)   
    

    代码示例:设置持久Cookie的有效时间

    // 创建Cookie实例对象
    Cookie cookie = new Cookie("user_token", new Date().toString());
    // 设置Cookie的有效时间为一天
    cookie.setMaxAge(60*60*24);
    // 将Cookie实例对象添加到Response对象中
    response.addCookie(cookie);
    

    获取Cookie在浏览器上保持的秒数

    getMaxAge()
    

    设置Cookie采用的协议版本

    setVersion(String version)
    

    获取Cookie采用的协议版本

    getVersion()
    

    设置Cookie的注解部分

    setComment(String comment)
    

    获取Cookie的注解

    getComment()
    

    设置Cookie是否使用安全的协议传送

    setSecure(boolean isSecure)
    

    获取Cookie是否使用安全的协议传送

    getSecure()
    

    Cookie的生命

    所谓生命就是Cookie在客户端的有效时间,可以通过setMaxAge(int expiry)来设置Cookie的有效时间。

    cookie.setMaxAge(-1)
    

    Cookie的maxAge属性的默认值就是-1,表示只在浏览器内存中存活。一旦关闭浏览器窗口,那么Cookie就会消失。

    cookie.setMaxAge(60*60)
    

    表示Cookie对象可存活1小时。当生命大于0时,浏览器会把Cookie保存到硬盘上,就算关闭浏览器或者重启客户端电脑,Cookie也会存活1小时。

    cookie.setMaxAge(0)
    

    Cookie生命等于0是一个特殊的值,它表示cookie被作废。通常用来删除一个Cookie。

    相关文章

      网友评论

          本文标题:Java Cookie常用方法介绍

          本文链接:https://www.haomeiwen.com/subject/wfljgctx.html