A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩温华 中级黑马   /  2012-11-12 12:59  /  1291 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚开始学session感觉它有点抽象,大家对session是怎么理解的呢,有没有什么特别形象的描述。在使用中,session["第一个值"]=50,与它关联的cookie放在什么地方呢

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

5 个回复

倒序浏览
这是Cookie的一段解释:
Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。
与session关联的cookie应该是保存在内存中,所以IE浏览器关闭后Session就失效了。当然不同的浏览器对session的处理应该是不一样的吧。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
session和cookie的最大区别在于session是保存在服务端的内存里面,而cookie保存于浏览器或客户端文件里面;session是基于访问的进程,记录了一个访问的开始到结束,当浏览器或进程关闭之后,session也就“消失”了,而cookie更多地被用于标识用户,它可以是长久的,用于用户跟踪和识别唯一用户

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 chenhui 于 2012-11-12 15:13 编辑

      1、其实Session在服务器端就是一个字典集合,不同浏览器、同一种浏览器的不同窗体所创建的session对象会放在session池中,而Session池也是一个字典集合,是以SessionId为键,以Session对象为值的集合,而SessionId会以cookie的形式发回浏览器,而此时的Cookie是保存在浏览器内存中的。
      2、当用户登录后,将用户名存入Session,并产生一个SessionId返回给浏览器,当另一个用户用相同的浏览器的同一个窗口登录时,服务器先根据发过来的SessionId找到  
  该对象,然后将另一个用户的用户名存入Session中,从而覆盖了上次的值【Page中的Session属性获取的Session对象是一样的】;
      3、 当用户再打开一个不同浏览器或同一个浏览器的不同窗口登        录时,上次打开的IE中产生的SessionId不会传给服务器(因为不同浏览器或同一个浏览器的不同窗口是不同的进程,而不同的进程之间是不能共享内存的,而Cookie是存放在浏览器的内存中的,因此不会将SessionId传回给服务器),而是在服务器端重新创建一个Session对象,返回新得 SessionId给浏览器【不同的浏览器访问时,Page中的Session属性获取的Session对象时不一样的】;
      4、不同的浏览器之间不会共享SessionIdF:\学习.net\学习开发网站\网站(.net 2011版)\图片与一些记录\状态保持--Session.png。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
不好意思图片太大,上传不上去
回复 使用道具 举报
cookie是客户端的存储空间,由浏览器来维持,cookie机制采用的是客户端保持状态方案。
而session机制采用的是服务器保持状态方案,session类库就是在cookie中存储的。
当用户请求来自应用程序的web页时,如果该用户还没有会话,则web服务器将自动创建一个
session对象,其中最常见的一个用法就是存储用户的首选项,但是session的会话状态仅在支持cookie的浏览器中保留。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马