浏览器关闭后Session就会被销毁吗?

  Session是JSP的九大内置对象(也称为隐含对象)中的一个,用于保存当前用户的状态信息,初学者可能认为Session的生命周期是从打开一个浏览器发送请求到关闭浏览器,这是错误的。

  Session的运行机制

  当用户第一次访问一个支持Session的Web应用时,会开启一个新的Session会话。当用户浏览这个Web应用的不同网页时,始终处于该Session中。具体而言:

  1 当开启一个新的Session会话时,Servlet容器会创建一个HttpSession对象,该HttpSession对象可以存放用户状态的信息。

  2 Servlet容器为每个HttpSession对象分配一个唯一标识符即Session ID,把它作为一种Cookie保存在客户端即浏览器中。

  3 用户每次发送HTTP请求后,Servlet容器会从HttpServletRequest对象中取出Session ID,然后根据这个Session ID找到对应的HttpSession对象,从而获取用户的状态信息。

  结束Session生命周期的两种方式:

  1 Session.invalidate()

  用于强制注销用户。

  2 自动失效

  当用户和服务器的交互时间超过默认时间后,Session会失效。

  关闭浏览器后浏览器不会向服务器发送请求来关闭Session,Session不会被销毁。虽然可以在所有的客户端页面使用JS的window.onclose来监听浏览器的关闭动作,然后向服务器发送一个请求来关闭Session,但是不推荐这种做法。最正常的处理方式是它超时后自动被销毁。关闭浏览器后存在浏览器的Cookie就不存在了。Cookie有两种,分别存在浏览器的进程和硬盘。而Session的Cookie存在浏览器的进程中,当重新打开浏览器时,之前的Cookie中存放的Session ID已经不存在了,服务器从HttpServletRequest对象中没有找到Session ID,服务器会再发送一个新的存有Session ID的Cookie到浏览器中,即开启了一个新的会话,而服务器上原来的Session超时后会自动被销毁。其中,不同浏览器开启的是不同的Session会话。

  

  参考资料

  浏览器关闭后,Session会话结束了么?

Java Web 浏览器关闭后Session就会被销毁吗?的更多相关文章

  1. 浏览器关闭后Session真的消失了吗?

    今天想和大家分享一个关于Session的话题: 当浏览器关闭时,Session就被销毁了?  我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保 存当前用户的状态信 ...

  2. 如何让浏览器关闭后session失效

    llzzcc66 知道合伙人数码行家 推荐于2018-08-10   如果用户不点击网站的“退出”链接,而直接关闭浏览器(或者强制关闭浏览器进程.死机等),服务器无法处理用户退出网站的请求,解决方式如 ...

  3. 浏览器关闭后,Session就销毁了吗?

    https://blog.csdn.net/QQ1012421396/article/details/70842148 话题:       当浏览器关闭后,Session就销毁了吗?答案:      ...

  4. 解决使用maven的java web项目导入后出现的有关问题 -cannot be read or is not a valid ZIP file

    解决使用maven的java web项目导入后出现的有关问题 -cannot be read or is not a valid ZIP file   错误问题:虽然查找repository目录下是有 ...

  5. 浏览器关闭后,Session会话结束了么?

    今天想和大家分享一个关于Session的话题: 当浏览器关闭时,Session就被销毁了? 我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保 存当前用户的状态信息 ...

  6. Session的生命周期之关于浏览器关闭后的Session

    Session是JSP的九大内置对象中的一个,它可以保存当前用户的各种的状态信息. 初次接触Session时认为Session的生命周期是从浏览器打开一个窗口发送请求开始,到浏览器窗口关闭结束.其实这 ...

  7. Session会在浏览器关闭后消失吗?

    转  http://blog.csdn.net/rongwenbin/article/details/51784310 Cookie的两种类型   在项目开发中我们时常将需要在客户端(浏览器)缓存的数 ...

  8. Java Web之Cookie、Session

    讲Cookie和Seesion之前,先讲一下HTTP连接其实是无序的,服务器不知道是谁在访问它.现在我们来实现一个简单的邮箱功能. 要求: 1.登录页面登录之后看到收件箱和欢迎我 2.点击收件箱看到几 ...

  9. java web作用域page request session application

    转载自:http://blog.csdn.net/wyd458549392147/article/details/6944481 1.page指当前页面.只在一个jsp页面里有效 . 2.reques ...

随机推荐

  1. eMMC真能优化成UFS?谈谈手机闪存的文件系统

    和UFS闪存相比,eMMC的性能更弱,同一型号的手机混用这两种规格的闪存,让一些消费者感到了不满.对此,厂商称通过优化,eMMC的产品也可以获得优秀的体验.这个优化到底是怎么回事?根据以往的一些宣传, ...

  2. Jenkins-在windows上安装及其部署

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.其主要功能:1.持续的软件版本发布/测试项目. ...

  3. NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions

    .NET Core 控制台程序没有 ASP.NET Core 的 IWebHostBuilder 与 Startup.cs ,那要读 appsettings.json.注依赖.配日志.设 IOptio ...

  4. Educational Codeforces Round 55 (Rated for Div. 2)

    D. Maximum Diameter Graph 题意 给出每个点的最大度,构造直径尽可能长的树 思路 让度数大于$1$的点构成链,考虑是否能在链的两端加度为$1$的点 代码 #include &l ...

  5. 安装tftp

    #!/bin/bash # tftp install # 20180711 # 仅测试过操作系统 ubuntu 16.04 download_url='http://img.fe.okjiaoyu.c ...

  6. git中利用rebase来压缩多次提交 ----- 原文:https://blog.csdn.net/itfootball/article/details/44154121

    之前我们用git merge –squash来将分支中多次提交合并到master后,只保留一次提交历史.但是有些提交到github远程仓库中的commit信息如何合并呢? 使用下面的命令,最后一个数字 ...

  7. linux tomcat单机部署多应用

    1.修改/etc/profile 增加tomcat环境变量

  8. 微信小程序【获取验证码】倒计时效果

    最近开始接触微信小程序,会记录一些相关的小功能——例如这次是点击[获取验证码]按钮出现的倒计时效果. 原文: http://blog.csdn.net/Wu_shuxuan/article/detai ...

  9. WebService - 术语介绍

    一.WebService是什么? 1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2. 一个跨语言.跨平台的规范(抽象) 3. 多个跨平台.跨语言的应用间通信整合的方案(实际 ...

  10. from中buttone 和 input type="button" 区别

    在做一个表单提交时碰到的问题, 1.js判断阻止表单提交,如果是form 里面的button的话,恭喜你,你要再换个写法了.<button type="submit" ... ...