Cookie&Session的原理与细节

来源:互联网 发布:电脑隐藏软件 编辑:程序博客网 时间:2024/06/07 02:13

COOKIE


COOKIE的原理:

  1. 服务器创建Cookie对象,保存会话数据,把Cookie数据发送给浏览器,    response.addCookie(cookie);     (响应头:set-cookie: name=jacky)
  2. 浏览器获取cookie数据,保存在浏览器缓存区,然后在下次访问服务器时携带cookie数据       (请求头: cookie: name=jacky)
  3. 服务器获取浏览器发送的cookie数据     request.getCookies();
COOKIE的细节:

1)cookie的数据类型一定是字符串,如果要发送中文,必须先对中文进行URL加密才可以发送。URLEncoder.encode();

2)setPath(path): 修改cookie所在的有效路径。什么是有效路径? 如果把该cookie设置到某个有效路径下,然后当浏览器访问这个有效路径的时候,才会携带cookie数据给服务器。

3) setMaxAge(整数) : 设置cookie的有效时间

      正整数: 表示超过了正整数的数值的时间,cookie就会丢失!(时间单位:秒)

      负整数: 表示如果浏览器关闭了,cookie就会丢失!(默认情况下)

       0   :  表示删除同名的cookie

4)cookie可以有多个,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB

SESSION

SESSION的原理:

1)服务器创建Session对象,服务器会给这个session对象分配一个唯一的标记JSESSIONID

2)把JSESSIONID作为Cookie发送给浏览器

3)浏览器得到JSESSIONID保存下来,在下次访问时携带这个JSESSIONID去访问服务器

4)服务器得到JSESSIONID,在服务器内存中搜索是否存在指定JSSESSINOID的session对象

5)如果找到,则返回这个session对象

6)如果找不到,可能直接返回null,或者再创建新的session对象。

   HttpSession session = request.getSession();

结论: 通过JSESSIONID在服务器中查询对应的session对象。


SESSION细节:

1)setMaxInactiveInterval(秒数): 设置session对象的有效时间,如果设置为0或负数永远不会销售session。

问题:session在什么销毁?

一次会话的时间!注意不是浏览器关闭,session对象就销毁!!

默认情况: 等待30分钟空闲时间,session对象才会销毁。

<!-- 设置全局的session对象的过期时间(分钟)web.xml里<web-app>下添加,注意最小设置1,只能是整数 --><session-config><session-timeout>1</session-timeout></session-config>
2)可以让JSESSIONID不会随着浏览器关闭而丢失!!!

/** * 设置JSESSIONID的时间,不会随着浏览器关闭而丢失! */Cookie c = new Cookie("JSESSIONID",session.getId());c.setMaxAge(1*30*24*60*60);//1个月response.addCookie(c);
3)直接手动销毁sessino对象
invalidate();

4)  创建或得到session对象

request.getSession(true) 等价于request.getSession() :

创建或得到session对象,查询session对象(查询JSESSIONID),如果没有sessino对象,则创建新的session对象

request.getSession(false)  :

得到session对象。 查询session对象,如果没有session对象,直接返回null



COOKIE与SESSION的对比

Cookie特点:                                       

  1. 会话数据放在浏览器端
  2. 数据类型只能string,而且有大小限制的
  3. 相对数据存放不安全。

Session特点:

  1. 会话数据放在服务器端(服务器内存),占用服务器资源
  2. 数据类型任意类型,没有大小限制的。
  3. 相对安全

 




原创粉丝点击