JavaEE——Session与Cookie的区别和联系

Cookie

cookie是客户端在访问web服务器时,服务器在客户端的机器上存放的信息。
服务器将Cookie保存在客户机器上的原因是为了跟踪客户的状态。这主要用于特殊的场合如电子商务。JavaServletApi为Cookie提供了简单实现,javax.servlet.http.Cookie类表示Cookie。
Cookie保存客户端的硬盘上,通过key和value值来保存信息,类似于Map。
Cookie的key和value 不能使用中文。如果要保存中文,必须使进行编码。

Session

会话(Session)是指在一段时间内,用户使用同一个浏览器进程与Web应用之间的交互过程。
会话(Session)通常用来跟踪用户的状态,缓存用户在此浏览器进程中的信息。
当用户关闭浏览器,上一个Session也就无法再次获得了(Cookie的maxAge为-1的情况)。再次打开新的浏览器,将开始一个新的会话。
服务器给每个用户创建一个会话,即HttpSession对象,保存在服务器端。

类javax.servlet.http.HttpSession。每一个HttpSession代表用户的一个会话。
每一个Session的过期时间默认为30分钟。


要想知道两者的区别和联系,就需要了解这两者在客户端访问浏览器时的交互。

IE表示客户端
当客户端第一次请求服务器时,服务器就会给用户分配一个唯一的会话标识,即JESSIONID。然后以Cookie的形式返回给用户。用户这边就保存了一个cookie。

下图是一个响应头:


而服务器要跟客户端保持对话,所以服务器中保存了一个相同JESSIONID的session。当浏览器再次访问服务器,

下图是在浏览器中随意点的一个链接。

  1. Accept:
    image/webp,image/*,*/*;q=0.8
  2. Accept-Encoding:
    gzip, deflate, sdch
  3. Accept-Language:
    zh-CN,zh;q=0.8
  4. Connection:
    keep-alive
  5. Cookie:
    HMACCOUNT=3E8DE87F6357F592; BDUSS=o1SXlKa3drcnB3NTFBa3UwUH5WRFI1dHdJbU85NXBDbDc1VS1oY3YxOU9URnBZSVFBQUFBJCQAAAAAAAAAAAEAAABbiGlPZna57XZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE6~MlhOvzJYZG; BAIDUID=077E77CB5F46933F6FE7FF8E57D4984A:FG=1; PSTM=1486268148; BIDUPSID=F51A929DC89591AEF14F75E4089CF1B1; MCITY=-158%3A
  6. Host:
    hm.baidu.com
  7. Referer:
    http://blog.csdn.net/damenhanter/article/details/24771913
  8. User-Agent:
    Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
可以看到,有一个Cookie属性。因为已经不是第一次访问该服务器,所以当浏览器再次访问服务器时,会携带包含了jsessionid的cookie访问服务器。服务器根据此id返回此用户的HttpSession对象,就保持了会话。


所以,我们可以知道Cookie是保存在客户端,Session是服务器自己保存。Session 状态信息保存在服务器端。这意味着安全性更高。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值