Cookie和Session的对比

1、Cookie

创建

Cookie cookie = new Cookie(cookieName, cookieValue);

保存

cookie.setMaxAge(10 * 60);设置cookie 在客户端的持久化时间,以秒为单位,设置为保存10分钟,过期浏览器自动删除该cookie信息。

删除

如果想删除客户端已经存储的Cookie信息,就是将持久化时间设置为0

2、Session

创建

第一次执行request.getSession()时创建。

获取对象

  • 两个get方法:
    • request.getSession(false):得到session对象。原来有Session就直接返回,没有返回null
    • request.getSession(true):创建或得到session对象。原来有Session就直接返回,没有Session自动创建新的session对象。
    • request.getSession();不加参数默认就是true。

销毁

  • session过期/失效(默认30分钟)
    • void setMaxInactiveInterval(int interval) : 设置session的有效时间
  • 手动销毁session(注销或者退出)
    • session.incalidate()

session对象销毁时间:

  • 1、默认情况30分钟服务器自动回收
  • 2、修改session回收时间
  • 3、全局修改session有效时间

服务器关闭时,session销毁了吗?
当服务器关闭时,存放在客户端浏览器中的sessionid(即某session的唯一标识符)被销毁,但是存放在服务器中的sessionid没有被销毁。

3、对比

  • 数据存储地点:
    • Cookie数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端可以清除cookie
    • Session将数据存储到服务器端,安全性相对好,增加服务器的压力
  • 存储信息:
    • Cookie只能存储字符串类型,不能保存对象,不能存中文
    • Session可以保存对象,可以存中文
  • 存储大小
    • Cookie存储量有限
    • Session可以无限量存储多个变量
  • 安全性:
    • Cookie安全性不好
    • Session安全性相对好

4、关于Session的一点补充

  • 当在同一个浏览器中同时打开多个标签,发送同一个请求或不同的请求,仍是同一个session;
  • 当不在同一个窗口中打开相同的浏览器时,发送请求,仍是同一个session;
  • 当使用不同的浏览器时,发送请求,即使发送相同的请求,是不同的session;
  • 当把当前某个浏览器的窗口全关闭,再打开,发起相同的请求时,是不同的session。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值