Java Cookie详解
2016-06-03 17:42
561 查看
Cookie 的作用我想大家都知道,通俗地说就是当一个用户通过 HTTP 协议访问一个服务器的时候,这个服务器会将一些 Key/Value 键值对返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时这个用户下次访问这个服务器的时候,数据又被完整地带回给服务器。cookie的内容主要包括:名字、值、过期时间、路径和域。路径和域一起构成cookie的作用范围。不设置cookie的过期时间那么就称这个cookie是会话级别的cookie,关闭浏览器cookie就消失。会话级别的cookie一般不存储在硬盘上而存储在内存里面。若设置了过期时间浏览器就会把cookie存储到硬盘上,关闭浏览器再打开,cookie会一直存在直到超过过期时间。存储在硬盘上的cookie可以被不同的浏览器所共享.当前
Cookie 有两个版本:响应头的标识分别是 “Set-Cookie”和“Set-Cookie2”。Cookies版本0(有时被称为Netscape Cookies)和Cookies版本1(RFC2965)。
Version 0:
NAME=VALUE:键值对,可以设置要保存的 Key/Value,注意这里的 NAME 不能和其他属性项的名字一样
Expires:格式为:Wdy, DD-Mon-YYYY HH:MM:SS GMT。GMT时间格式。当超过这个时间,此cookie将失效。可选属性,如果未指定过期时间,则在当前会话结束后失效。
Domain:生成该 Cookie 的域名,如 domain="xulingbo.net",如果没有设置cookie的domain值,该属性的默认值就是创建cookie的网页所在的服务器的主机名。
Path:该 Cookie 是在当前的哪个路径下生成的,如 path=/wp-admin/。如果为未设置,则在哪个页面产生就只能在该页面访问。
Secure:指定当前cookie是否使用安全协议发送cookie(SSL,HTTPS等)
Version 1:
NAME=VALUE:与 Version 0 相同
Version:通过 Set-Cookie2 设置的响应头创建必须符合 RFC2965 规范,如果通过 Set-Cookie 响应头设置,默认值为 0,如果要设置为 1,则该 Cookie 要遵循 RFC 2109 规范
Comment:注释项,用户说明该 Cookie 有何用途
CommentURL:服务器为此 Cookie 提供的 URI 注释
Discard:是否在会话结束后丢弃该 Cookie 项,默认为 fasle
Domain:类似于 Version 0
Max-Age:最大失效时间,与 Version 0 不同的是这里设置的是在多少秒后失效
Path:类似于 Version 0
Port:该 Cookie 在什么端口下可以回传服务端,如果有多个端口,以逗号隔开,如 Port="80,81,8080"
Secure:类似于 Version 0
cookie可以有多个NAME/VALUE,用英文分号分隔开。如果有其他属性如path,也是键值对并且用分号分隔开。如Set-Cookie: NAME=VALUE; NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE。
需要用到javax.servlet.http.Cookie对象,这个对象支持version0和version1,只是个别属性没法设置。
其他的属性设置是类似的。想要获取cookie的话,如下:
当用户注册网站的时候我们可以把用来唯一标识用户id的cookie保存到客户端,当用户再次打开我那个站的时候会把这个id发送到服务器,检查用户是否选择自动登录,然后既可以为用户自动执行登陆操作。
Cookie 有两个版本:响应头的标识分别是 “Set-Cookie”和“Set-Cookie2”。Cookies版本0(有时被称为Netscape Cookies)和Cookies版本1(RFC2965)。
Version 0:
NAME=VALUE:键值对,可以设置要保存的 Key/Value,注意这里的 NAME 不能和其他属性项的名字一样
Expires:格式为:Wdy, DD-Mon-YYYY HH:MM:SS GMT。GMT时间格式。当超过这个时间,此cookie将失效。可选属性,如果未指定过期时间,则在当前会话结束后失效。
Domain:生成该 Cookie 的域名,如 domain="xulingbo.net",如果没有设置cookie的domain值,该属性的默认值就是创建cookie的网页所在的服务器的主机名。
Path:该 Cookie 是在当前的哪个路径下生成的,如 path=/wp-admin/。如果为未设置,则在哪个页面产生就只能在该页面访问。
Secure:指定当前cookie是否使用安全协议发送cookie(SSL,HTTPS等)
Version 1:
NAME=VALUE:与 Version 0 相同
Version:通过 Set-Cookie2 设置的响应头创建必须符合 RFC2965 规范,如果通过 Set-Cookie 响应头设置,默认值为 0,如果要设置为 1,则该 Cookie 要遵循 RFC 2109 规范
Comment:注释项,用户说明该 Cookie 有何用途
CommentURL:服务器为此 Cookie 提供的 URI 注释
Discard:是否在会话结束后丢弃该 Cookie 项,默认为 fasle
Domain:类似于 Version 0
Max-Age:最大失效时间,与 Version 0 不同的是这里设置的是在多少秒后失效
Path:类似于 Version 0
Port:该 Cookie 在什么端口下可以回传服务端,如果有多个端口,以逗号隔开,如 Port="80,81,8080"
Secure:类似于 Version 0
cookie可以有多个NAME/VALUE,用英文分号分隔开。如果有其他属性如path,也是键值对并且用分号分隔开。如Set-Cookie: NAME=VALUE; NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE。
需要用到javax.servlet.http.Cookie对象,这个对象支持version0和version1,只是个别属性没法设置。
HttpServletRequest request HttpServletResponse response Cookie cookie = new Cookie("cookiename","cookievalue"); cookie.setMaxAge(3600); response.addCookie(cookie);
其他的属性设置是类似的。想要获取cookie的话,如下:
Cookie[] cookies = request.getCookies(); for(Cookie cookie : cookies){ cookie.getName(); cookie.getValue(); }
当用户注册网站的时候我们可以把用来唯一标识用户id的cookie保存到客户端,当用户再次打开我那个站的时候会把这个id发送到服务器,检查用户是否选择自动登录,然后既可以为用户自动执行登陆操作。
相关文章推荐
- 使用Java VisualVM监控远程JVM cpu jps
- 如何提高eclipse开发效率
- spring基础学习一 : 搭建spring基本架构
- java面向对象思想1
- java针对Url处理
- java生成随机编码的方法。
- Java 序列化Serializable
- RxJava入门学习笔记
- spring TestUtil Junit测试类
- java三方---->html解析jsoup的使用
- 实战记录:从EclipseLink迁移到Hibernate上(1)替换
- Java中的IO笔记Mars
- spring,mybatis,druid,多数据源配置
- A java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Ecl
- Caused by: java.lang.IllegalArgumentException: prefix wsdp is not bound to a namespace
- 关于genymotion的 unable to start the virtual device 问题整合
- 使用eclipse远程连接hive
- Excel For Java
- java方法重载、方法重写
- Spring boot +freemarker+mybatis整合