精华内容
下载资源
问答
  • 关闭浏览器session是否会消失? session是否关闭浏览器就消失了? 不是! 当你第一次访问一个网站的时候,服务器会向浏览器发送一个sessionid, 浏览器得到这个sessionid会将他放在进程内存里,当关闭浏览器...

    关闭浏览器session是否会消失?

     session是否关闭浏览器就消失了?
    	不是!
    	 当你第一次访问一个网站的时候,服务器会向浏览器发送一个sessionid,浏览器得到
    	 这个sessionid会将他放在进程内存里,当关闭浏览器时,进程关闭,浏览器的sessionid
    	 消失。
    	 而服务器端是根据浏览器的sessionid去查找服务器的session,关闭了浏览器,这个进程
    	 就结束了,因此浏览器中的 sessionid会消失,也就找不到服务器中的session,但是服务
    	 器中的session并没有消失,若想要服务器中的session消失需要,需要服务器调用方法使
    	 得session消失,或者是session到达了最大的存活时间,(一般为30分钟)		 
    
    	
    
    
    
    
     
    
    展开全文
  • Session是JSP的九大内置对象(也称为隐含对象)中的一个,用于保存当前用户的状态信息,初学者可能认为Session的生命周期是从打开一个浏览器发送请求到关闭浏览器,这是错误的。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会话。

    参考资料

    展开全文
  • 对于做web开发的人,不管用ASP.NET JAVA还是其他,都会...关闭浏览器Session真的会丢失吗?先让我们来看下session机制。 session机制session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能...
    对于做web开发的人,不管用ASP.NET JAVA还是其他,都会经常用Session来保存一些信息。而对于Session消失的问题,初学者都会有个误区,认为关闭浏览器,Session值就丢失了。包括我自己也一直是这么认为的。
    关闭浏览器Session真的会丢失吗?
    先让我们来看下session机制。
    session机制session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
    当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。

    从上面可以知道,在客户端会保存一个Session id的值,既然能在客户端保存Session值。这里就有一个问题,Session在客户端是怎么保存的,保存在哪里?
    ===================================
    以下关于cookie和关于session的内容摘自http://blog.csdn.net/wangzhkai/archive/2009/05/15/4187496.aspx

    关于cookie

    cookie怎么使用就不说了,cookie按照在客户端存放的方式,可以分为两类,
    一种是会话性质的cookie,存放在浏览器内存中,当你在用代码向客户端写入cookie的时候,如果没有指定过期时间,那么cookie是存放在浏览器的内存里面的,不会持久化在硬盘上,也就是你在浏览器的临时文件里找不到!
    一种是持久化的cookie,存放在硬盘上,当你指定了cookie的过期时间,那么,在客户端写入cookie的时候就会在浏览器的临时文件下生成一个文件,具体格式和名字可以到浏览器临时文件去看下

    cookie的原理是这样的:当你在服务器端的代码里写了response.cookie["mycookie"]="mytestcookie"的时候,返回给客户端的http响应中,会在http相应头中加入cookie的信息,浏览器收到相应后,会按照http响应头里的cookie在客户端建立cookie。
    客户端的cookie也是插在http头中发送到服务器端的,并且,一个域,在客户端建立的所有cookie,在客户端的每一次的http请求都会带着,比如testwebsite.com这个站点,任何时刻写到客户端的cookie,只要不过期,浏览器在向testwebsite.com发送http请求的时候,会带上这些cookie,所以cookie在客户端的大小是有限制的

    关于session
    cookie明白了之后session就容易理解了,asp.net默认的session就是通过第一种cookie来实现的,你可以把自己的浏览器的cookie彻底禁用,然后再去登录一些注册过的门户网站,会发现很多都登录不了了。是cookie,将http的请求变得有状态。session的实现是web服务器的事情,不过很显然是利用会话cookie,也就是存放在浏览器内存里的那种cookie来实现的,在cookie里只是存放了SessionID,然后在服务器上建立了一张表,对应客户端的SessionID。这张表是存放在服务器上的进程中的,也就是服务器的内存里,也就是Application里。当客户端请求服务器的时候,如果服务器发现这是一个新的请求,就会分配给他一个SessionID,也就是在浏览器写入一个sessionID的cookie。你可以试一下,在你请求过一次服务器之后,在服务器遍历客户端所有的cookie,就会发现这个叫做SessionID的cookie。
    ========以上部门来自CSDN博客,转载请标明出处:http://blog.csdn.net/wangzhkai/archive/2009/05/15/4187496.aspx===========

    根据上面的分析 也可以知道,所谓的关闭浏览器,Session就丢失是因为我们把Session保存在会话性质的cookie,也就是保存在浏览器的内存中,关闭浏览器时,因为浏览器的内存不存在了,所以session就丢失了。
    如果我们能让Session按cookie的第二种存放的方式来实现,那不就可以实现关闭浏览器的时候session不会丢失吗。
    session可以用URL路径来保存,如下面所示:
    一种是作为URL路径的附加信息,表现形式为http://...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
    另一种是作为查询字符串附加在URL后面,表现形式为http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
    这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。
    为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。

    欢迎大家参考有关Session与Cookie的讨论。

    转载于:https://www.cnblogs.com/chhuic/archive/2009/09/26/1574399.html

    展开全文
  • 购物车是一个很好的例子,一个用户可以有很多session,但每个session只针对一个用户,这就保证了不同session之间的信息独立。   首先说明一点,在通常意义上,session所能发挥作用是基于cookie机制。针对所...
    
     Session是在客户端请求到达服务器时,服务器为此请求发出的客户所创建的一个对象,保存在服务器端。购物车是一个很好的例子,一个用户可以有很多session,但每个session只针对一个用户,这就保证了不同session之间的信息独立。 

            首先说明一点,在通常意义上,session所能发挥作用是基于cookie机制。针对所需要解释的问题,做这样一个假设:我们第一次访问一个网页。当客户端发送请求后,服务端会建立一个针对此请求发出客户的session对象,而且每个session都会有一个sessionID。服务端会自动将这个sessionID作为一个cookie附加到response上返回给客户端,这个cookie存放在浏览器内存中。我们每次对此网页发送的request都会附带着这个cookie,服务端收到这个请求后会都去cookie中取得这个sessionID,然后查询服务端是否存在一个对应此ID的session对象。如果有,可以直接使用此session;如果没有,则会新建一个。当浏览器关闭后,其所占的内存就会是放掉,cookie自然也就被清除了,此时我们不再保存有这个sessionID。所以再打开浏览器访问同一个页面时,由于没有sessionID,也就查不到对应的session对象,此时重新创建一个新的session对象。 

            那当我们关闭浏览器之后,服务器端原来的session对象是否还存在呢?答案是肯定的。服务端根本不知道我们是否关闭了浏览器,也不关心这个。客户端与服务端之间进行通信的唯一途径就是通过请求。服务器有自己的一套机制来管理session,比如多长时间会清除没有使用过的session对象,等等。 

            所以说,关闭浏览器session就被清除只是我们所看到的表面现象(实际上是新建了一个session对象),通常情况下,服务器并不会马上清除session对象,但这个根据服务端的设定而不同。 

            PS:cookie一般分为两种:一种是会话cookie,即服务端为session自动创建的cookie,这个cookie存放在浏览器进程中。另一种是可以存放在硬盘上的,可以通过服务端的某些设置,将一些信息放到cookie中并返回给客户端存放在硬盘上。 
    php是根据php.ini全局配置:
    session.gc_probability = 1

    session.gc_divisor    = 100

    session.gc_maxlifetime = 1440

    这三个配置组合构建服务端session的垃圾回收机制

    session.gc_probability与session.gc_divisor构成执行session清理的概率,理论上的解释为服务端定期有一定的概率调用gc函数来对session进行清理,清理的概率为:gc_probability/gc_divisor 比如:1/100  表示每一个新会话初始化时,有1%的概率会启动垃圾回收程序,清理的标准为session.gc_maxlifetime定义的时间。




    展开全文
  • 关闭浏览器session就消失了吗

    万次阅读 2018-03-28 21:34:30
    以前一直以为cookie就是一直保存在客户端的会话信息,而session是保存在服务器断的会话信息,浏览器关闭以后就会被清除,今天看帖子突然发现 大错特错,搜了些帖子以及博客详细看了下,都是讲会话cookie和持久cookie...
  • 浏览器关闭后,Session就销毁了吗?答案: 存在于浏览器上的唯一标识符JSESSIONID(sessionid)消失了,但是服务器中存放的sessionid并没有立马销毁。分析: 我们知道Session是JSP的九大内置对象(也叫隐含对象)...
  • 当在前台取出session时,关闭浏览器后再次访问服务器,这时服务器返回了一个null,此时的返回的session并非之前的那个session而是一个新的session。 -->先来看看session的生命周期:  创建:当getSession()后...
  • 如题,请问关闭浏览器 session是不是被销毁,session的主要应用有哪些啊?
  • 关闭浏览器Session失效.

    千次阅读 2009-06-09 18:46:00
    1、onunload调用下面js函数 <!-- function removeline(){ if(event.clientX){ document.write(); document.all.WebBrowser.ExecWB(45,1); } } // -->
  • JS关闭浏览器Session失效.

    千次阅读 2009-09-26 13:38:00
    1、onunload调用下面js函数 function removeline(){ if(event.clientX document.write( ); document.all.WebBrowser.ExecWB(45,1); } } removeline.jsp 加上invalidate()
  • 以前一直以为cookie就是一直保存在客户端的会话信息,而session是保存在服务器断的会话信息,浏览器关闭以后就会被清除,今天看帖子突然发现大错特错,搜了些帖子以及博客详细看了下,都是讲会话cookie和持久cookie...
  • [img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/2.gif][/img]
  • setcookie(session_name(), session_id(), time() + $lifeTime, "/");  // 判断是否登陆 if (isset($_SESSION["admin"]) && $_SESSION["admin"] === true) { echo ""; } else { // 验证失败,将 $_...
  • if (isset($_SESSION["admin"]) && $_SESSION["admin"] === true) {  echo "";  } else {  // 验证失败,将 $_SESSION["admin"] 置为 false $_SESSION["admin"] = false;  die("您无权访问"); ...
  • 本来想用fiter过滤后台登录,可是,当你给一个flag时,它实际还是存储在session中,这样的话,在我把url直接跨过框架指向一个新增或者其它后台页面时,只要session中登录过保存的值,直接关闭后,还是没有清除,因此...
  • laravel关闭浏览器释放session

    千次阅读 2017-08-11 12:05:29
    打开laravel目录的 config->session.php 修改配置项目 这个配置项是session的过期时间,单位是分钟 ...这个配置项是关闭浏览器session是否消失,默认是false不消失,改为true就消失了 'expire_on_close' => true,
  • session在服务端保存信息,是否关闭浏览器session销毁无关,即:即使关闭浏览器session还是存在的。但是为什么关闭浏览器session好像就消失了。 参考:https://my.oschina.net/kevinair/blog/192829 1 ...
  • 客户端关闭浏览器会将本地的保存session的cookie对象内存释放掉,但是服务器端保存的session对象内存依然保存, 并没有立即释放掉,这时候你可以主动释放掉session内存,可以调用invalidate方法。 在j2ee中学习...
  • 关闭浏览器销毁session

    千次阅读 2011-07-06 15:03:51
    今天在处理用户在线状态查看时,碰到一个问题:如果用户关闭浏览器,在IE下,通过处理 页面unload时,document.location可正常触发销毁session的跳转,但google的chrome却无效,那么,到底有没有方法使chrome也生效...
  • 关闭浏览器后的session

    千次阅读 2016-08-10 14:21:04
    换句话说,用户关闭浏览器,Session也就死掉了,不存在了. 当你从新打开浏览器访问网页时,服务器会从新分配一个Session, 但这个Session已经不是原来的那个了. 若在页一创建了Session,在页二访问Session对象 如果...
  • 普通页面 js关闭当前页清除sessionfunction save() {//存储sessionwindow.sessionStorage.setItem("this_session", "This is session!");window.sessionStorage.setItem("user", "This is User");//取出sessionvar ...
  • 关闭浏览器清除SESSION

    2010-03-18 20:21:00
    一直以来都说因为无法捕获客户端是否把浏览器关闭,所以用户关闭IE浏览器后,无法清除session。但个人想的一个方法不知道是否可行: function RunOnUnload() { //提交一次,清除session}
  • 解决关闭浏览器session失效,解决方法在最后. 在使用到session时,有讲到一个session的过期时间,默认是30min,这个值可以在tomcat &gt; conf &gt; web.xml中查看修改 可以看到配置文件中默认是30min,按理...
  • 我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保存当前用户的状态信息,初学它的时候,认为Session的生命周期是从打开一个浏览器窗口发送请求到关闭浏览器窗口,但其实这种说法是不....
  • 我们知道在正常情况下,发送http请求时,消息头中会自动携带cookie信息,这其中就会包括SESSIONID信息,所以只要我们没有关闭浏览器,消息头中都会自动携带这个信息,以供服务器访问相应的session。 但是如果我把...
  • session的存在周期为当用户关闭浏览器后就会消亡,这时用户可能是因为不小心点错才会关闭。我们可以使用cookie来记录下用户的JSESSIONID,来保证用户重新登录时可以获取上一次关闭浏览器前的信息。像这样: ...
  • 当我们的浏览器首次访问服务器的某个servlet的时候会创建一个新的session对象(如果这个被访问的servlet有获取session对象的语句) 后会把此session对象的id号码通过cookie的方式回写到客户端浏览器,只不过默认的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,704
精华内容 1,881
关键字:

关闭浏览器session