您的位置:首页 > 其它

cookie && session

2015-04-23 16:49 155 查看


/**

* Cookie 在服务器端创建 保存在浏览器端

* 作用:存储用户的数据信息

* Cookie存储的用户信息是以String类型 的键值对保存的

* 服务器发给浏览器的cookie存储在相应头中 在Set-Cookie可以看到cookie信息

* 浏览器发给服务器的cookie存在请求头中

* cookie是客户端技术

*

* 在浏览器第一次访问应用时cookie没有生产,访问之后才产生cookie

* 只有在第二次访问(以后访问)时,才会带过来cookie信息

* 每一个应用的cookie都是独立存储的,不同的应用之间不能访问对方的cookie

* 同一个应用可以创建多个cookie

* 一个web网站可以给多个浏览第发送cookie,每中浏览器都有自己的cookie

* 存储方式,不同的浏览器之间不能访问彼此的cookie。一个浏览器可以存储多个

* 网站的cookie。

* 浏览器一般只允许存放300个cookie,同一个站点最多存放20个cookie

* 每个cookie的大小限制为4kb。

* 默认情况下,回话级别的cookie在浏览器退出之后即被删除,可以通过设置,来确定cookie

* 的存储时间 //设置cookie的生命周期 cookie.setMaxAge(3600);

* 正整数:代表多少秒之后cookie失效

* 零:清除cookie

* 负数:保存在浏览器内存中

* 过期的cookie会自动清除

* cookie创建以后,如果设置了存储时间,在存储时间范围内,只要访问该站点,就会附带上cookie信息

* 默认情况下cookie是保存在浏览器内存中的,浏览器关闭,cookie就消失。

* 可以指定cookie保存的路径,默认放在当前应用的站点根目录下。

* cookie.setPath("路径");

* 一但设置cookie路径以后,只有在对应的路径及其子路径下,才能获取到cookie

* 当前应用的cookie可以放到其他应用的目录下,在其他应用中获取该cookie信息

*

*

*

* 装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。

* 换句话 说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。

* 因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。

* 并且,当我们使用装饰器模 式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。

* 客户不知道代理委托了另一个对象

* 客户指定了装饰者需要装饰的是哪一个类

*/



session

session在服务端产生,存储在服务端,属于服务端技术

cookie的数据是保存在浏览器 存储的信息量有限

cookie的信息可以被用户清晰的看到 不适合保存用户的敏感信息

用户可以禁用cookie cookie必须发送到浏览器

session不用发送到浏览器端

session对象是在第一次调用request.getSession()或者request.getSession(true)

时创建的。

服务器在创建session之后,会为每一个session分配一个唯一的id作为标示

服务器会为每一个用户的浏览器创建一个独享的session对象

向session中保存数据

session.setAttribute("name", "adlkdksl");

通过session获取保存的数据,当获取的属性不存在时,返回的结果为null

String name = (String) session.getAttribute("name");

在同一个会话中 ,session的id都是相同的

默认情况下session的id保存在cookie中 JSESSIONID=D66482711E61E1EF93DD45309FE79974;

所有的session存储在一个map集合中

session依赖于cookie 通过JSESSIONID判断不同的用户浏览器请求

默认情况下 关闭浏览器,session没有消失,消失的是cookie存储的JSESSIONID

所以再去开启浏览器时,使用的是不同的会话。

可以通过cookie,设置JSESSIONID的生命周期

Cookie c = new Cookie("JSESSIONID",session.getId());

c.setMaxAge(6000);

response.addCookie(c);

session.setMaxInactiveInterval()设置session的失效时间

设置session以后,每次浏览器启动时都会查找JSESSIONID来找以往的session

如果找不到或者为空,则创建新的session。

调用getSession()方法后,就会创建session。

request.getSession(true);标示如果没有对应的JSESSIONID对象,

就会创建一个新的JSESSIONID为id的session对象,通常用来创建session对象

request.getSession(false);如果没有对应的JSESSIONID对象

则返回null;通常用来获取session对象

调用session.invaldate();之后session被销毁

session默认的过期时间是三十分钟,也可以在服务器中设置session的过期时间或者

通过session.setMaxInactiveInterval()设置session的失效时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: