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

  浏览器关闭后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会话结束了么?

原文地址:https://www.cnblogs.com/WJQ2017/p/8366424.html

时间: 2024-10-09 04:35:46

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

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

今天想和大家分享一个关于Session的话题: 当浏览器关闭时,Session就被销毁了? 我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保 存当前用户的状态信息,初学它的时候,认为Session的生命周期是从打开一个浏览器窗 口发送请求到关闭浏览器窗口,但其实这种说法是不正确的!下面就具体的去解释: 当用户第一次访问Web应用中支持Session的某个网页时,就会开始一个新的Session, 那么接下来当用户浏览这个Web应用的不同网页时,始终处于一个Se

JAVA web 会话技术Cookie&Session

会话技术,指的是从打开浏览器开始访问某个站点,到关闭浏览器的整个过程,称为一次会话. 会话技术分为Cookie和Session. Cookie是指 将数据存储在本地,减少服务器的存储压力,安全性不好,客户端可清除Cookie. Session是指将数据存储在服务器,增加服务器的存储压力,安全性高,客户端不可清除. 一.Cookie技术 (一). 服务器端怎么发送一个Cookie到客户端 1.创建一个Cookie Cookie cookie = new Cookie( String cookieN

web应用关闭后线程不回收问题

今天看<spring3.0企业应用开发实战>中关于web应用程序中调度器的启动和关闭问题中有这样一段话: 静态变量是ClassLoader级别的,如果web应用程序停止,这些静态变量也会从jvm中清除.但是线程则是JVM级别的,如果用户在web应用中启动一个线程,这个线程的生命周期并不会和web应用程序保持同步.也就是说,即使停止了web应用,这个线程也依旧是活跃的. 因此为了真正的验证上面的结论,实战了一下书中的例子 一 配置tomcat应用管理页面 1.首先启动tomcat后,通过web端

[转]JAVA WEB 浏览器兼容问题汇总

首 先谈一下浏览器,虽然现在ie依然是浏览器市场的老大,大约占有67%的份额,但是由于其各方面的欠缺,用户开始选择其他浏览器作为自己浏览网页的主要 工具,比如firefox.theworld.maxthon.chrome.opera等等,在用户使用比较多的浏览器中,分为2大派系 - ie内核和非ie内核,像theworld.maxthon.greenbrower等等都属于ie内核,而firefox.chrome.opera则 为非ie内核,众多的浏览器使我们的web程序就出现了兼容问题,像ie就

浏览器关闭使session失效的问题多种解决方式

直接关闭浏览器(或者强制关闭浏览器进程.死机等),服务器无法处理用户退出网站的请求,此举将会导致session失效,下面整理了一些解决方法,感兴趣的朋友可以参考下哈 如果用户不点击网站的“退出”链接,而直接关闭浏览器(或者强制关闭浏览器进程.死机等),服务器无法处理用户退出网站的请求,解决方式如下: 方式1:在每个页面中加入隐藏的IFrame,以异步刷新的方式定期刷新iframe页面,如每隔10S刷新一次,当服务器在一定的时间内未收到用户的刷新请求,则认为用户已经退出 优点:能在短时间内判断出用

解决java web项目导入后出现的问题 ---cannot be read or is not a valid ZIP file

导入以前的web项目后会出现以下三个错误: 1. Archive for required library: 'WebContent/WEB-INF/lib/readme.txt' in project 'xxxxxxxxx' cannot be read or is not a valid ZIP file 2. The project cannot be built until build path errors are resolved 3. Target runtime Apache T

Java Web 禁用Cookie对Session的影响

如果客户端禁用了Cookie,那么服务端就不能得到Session了.因为通过Session ID来确定当前会话对应的服务端Session,而Session ID通过Cookie来传递,所以禁用Cookie相当于失去了Session ID,也就得不到Session了. 禁用Cookie时使用Session即传递Session ID的实现方式如下: 1 PHP自动跨页传递 设置php.ini配置文件中的"session.use_trans_sid = 1",或者编译时启用"--e

java web浏览器访问工程前面添加一级目录学习笔记

有的时候因为nginx和f5策略问题需要在访问系统的时候前面添加一个前缀以区分不通地方需要用同一个工程的情况: 举个例子:当访问localhost:8080/webDemo/demo/shafei.jsp时,需要用另一种访问方式:localhost:8080/sf/webDemo/demo/shafei.jsp: 用sf的标志来区分不同地方需要访问该系统: 该如何实现呢: 这个需要在tomcat的server.xml中配置改工程: 找到<host>标签,在该标签中填入一下代码: <Con

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

错误问题:虽然查找repository目录下是有jar包,但是jar包是有问题的(可能是下载不完整),所以更改镜像地址到国内. 解决方案: 1)删除提示错误路径下的所有jar包(C:\Documents and Settings\Administrator\.m2\repository\org...). 2)更改镜像地址,最好改成国内(阿里),然后重新 Maven --->update project