session的生命周期

session的生命周期

 Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。

  Session什么时候失效?

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

  2. 调用Session的invalidate方法。

  Session对浏览器的要求:

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

  该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。

  注意:新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在链接上右击,在弹出的快捷菜单中选择”在新窗口中打开”时,子窗口便可以访问父窗口的Session。

如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?例如,绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:URL地址重写。

  URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。HttpServletResponse类提供了encodeURL(String url)实现URL地址重写,该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中。

  注意:TOMCAT判断客户端浏览器是否支持Cookie的依据是请求中是否含有Cookie。尽管客户端可能会支持Cookie,但是由于第一次请求时不会携带任何Cookie(因为并无任何Cookie可以携带),URL地址重写后的地址中仍然会带有jsessionid。当第二次访问时服务器已经在浏览器中写入Cookie了,因此URL地址重写后的地址中就不会带有jsessionid了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/112513.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【Lamp】lamp配置[通俗易懂]

    【Lamp】lamp配置[通俗易懂]参考了挺多文章http://www.cnblogs.com/candle806/archive/2011/03/14/1983992.htmlhttp://blog.csdn.net/callmeback/article/details/8130190  主要是这一篇文章http://www.linuxidc.com/Linux/2012-05/61079.htmhttp

  • 监控录像数据恢复方法步骤详解

    监控录像数据恢复方法步骤详解在人们生活日益改善的今天,社会的和谐安定成为了最为重要的一个问题。一些不法分子为了一己私利,通过不法手段谋取他人的财物。这样的行为对社会对个人都是一种威胁,为了能更好的防治这类社会危害因素,那就需要我们的电子警察——视频监控出马了。视频监控在现在生活中随处可见,道路上有治安监控,各家商铺有防盗监控,随处可见的监控给人们的生命财产安全带来了一份保障。利用安全防范技术进行安全防范首先对犯罪分子

  • http与https的区别与联系_http状态码

    http与https的区别与联系_http状态码HTTP与HTTPS握手的那些事

  • 模仿学习(Imitation Learning)概述

    模仿学习(Imitation Learning)概述本篇文章是基于台大李宏毅老师的课程写的,如有疏漏,请看原课程。https://www.youtube.com/watch?v=rl_ozvqQUU81.什么是模仿学习?模仿学习(ImitationLearning)也被称为基于演示的学习(LearningByDemonstration)或者学徒学习(ApprenticeshipLearning)。机器是可以与环境进行交互的,但…

  • python zipfile.zipfile_python解析json文件

    python zipfile.zipfile_python解析json文件从简单的角度来看的话,zip格式会是个不错的选择,而且python对zip格式的支持够简单,够好用。1)简单应用如果你仅仅是希望用python来做压缩和解压缩,那么就不用去翻文档了,这里提供一个简单的用法,让你一看就能明白。importzipfilef=zipfile.ZipFile(‘filename.zip’,’w’,zipfile.ZIP_DEFLATED)f.write(‘fil…

  • 大数据的使用方法,主要有哪些?「建议收藏」

    大数据的使用方法,主要有哪些?「建议收藏」我们正处于福雷斯特研究公司所描述的“用户时代”,这个时代中驱动业务决策的不再是公司,而是用户。基于这个原因,深度理解用户的重要性已经远胜以往,因此许多机构开始使用大数据技术来挖掘用户信息。在这个时代,企图收获成功(甚至是求生存)的在线业务必须切实的理解顾客的体验和行为,因此海量数据的收集及挖掘能力成了这些机构的必备手段。当下,有许多机构的分析仍处于数据的收集上,组织能力的缺乏和技术的限制让这些收…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号