服务端的session用于保存一次对话过程

服务端的session用于保存一次对话过程,那么服务端的session数据再什么时候会被清空?
我把浏览器关掉的话,它会清空么?
服务端怎么知道我的浏览器关掉了呢?
cookie的有效期是多少?
也是可以指定生存时长的么?

=================================================================================
此外,书上看到一句话:“若浏览器不支持使用Cookie,或者浏览器设置为不接受Cookie,那么将不能使用Session”,session和cookie是相互独立的吧?为什么cookie的禁用会影响session??不理解。

阅读 4.3k
3 个回答

按问号顺序

  1. 超时清空、服务器端语言层面unset清空、删除服务器端session文件清空等

  2. 不会,但是cookie没了,你存在本地cookie中的session_id也没有了,服务器端没有session_id就找不到session文件,其实session文件还是要等超时以后清空

  3. 服务器端不知道,所以要等设置的session超时时间到了以后会自动清空

  4. 你可以设置,不设置的话会话结束就清空

  5. 就是cookie超时时间

  6. 相互独立

  7. 请看第二个答案

可以百度一下Session的生命周期。

  • 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。比如Tomcat中Session的默认失效时间为20分钟。

  • cookie当然可以指定有效期

  • 虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志(保存一个Session id)。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。

比如你去吃饭,第一次带着饭卡去吃饭,很顺利。第二次你不带饭卡说你就是上次带着饭卡过来吃饭的谁谁谁,你试试老板让不让你吃。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题