如何监听通过浏览器关闭而销毁的session?

时间:2022-01-19 13:17:00
大哥大姐们,大叔大婶们
请问一下,如何监听通过浏览器关闭而销毁的session?  
哪位可以帮我一下,好郁闷呀#47

35 个解决方案

#1


使用valueBound和valueUnbound方法不行吗?

传入Session的对象如果是一个实现HttpSessionBindingListener接口的对象(方便起见,此对象称为监听器),则在传入的时候(即调用HttpSession对象的setAttribute方法的时候)和移去的时候(即调用HttpSession对象的removeAttribute方法的时候或Session Time out的时候)Session对象会自动调用监听器的valueBound和valueUnbound方法(这是HttpSessionBindingListener接口中的方法)。

#2


或者利用新的HttpSessionListener接口呢?

#3


关注,学习!
对啊,怎么样让清除session与浏览器的窗口关闭联系在一起?time out 一般都设的比较长,页面关闭了很就它都保留着session啊!

#4


浏览器关闭,应该SESSION就失效了吧,因为SESSION的范围就在一个浏览器打开的期间呀。

#5


干吗用的?

#6


浏览器关闭后,session就失效了,

它的活动期间是浏览器打开至关闭止。

#7


不设置MAXAGE,默认是浏览器关闭后session就失效,session失效后是无法取得的!

#8


监听通过浏览器关闭而销毁的session的作用:
是为了让非关闭浏览器,能够即时的反馈给网站知道。如,即时计算在线人数,不可用同账号登录等。
经过试验,HttpSessionBindingListener接口、HttpSessionListener接口并不能实现即时的功能。而通过设置time out时间减短的做法是治标不治本的烂方法,只能体现JSP不如ASP。

#9


非关闭浏览器==非法关闭浏览器

不好意思,漏个字

#10


关注?

#11


d

#12


这个好像就是 无法实现的。 如果,不是用户主动注销, 只能超时的时候 撤销。

#13


你的session的存活周期就是浏览器存活周期啊,浏览器关闭了,session自然也就没了

#14


<select name="menu" onchange="jump_bbs()" size="1" style="FONT-SIZE: 9pt"> 
            <option style="BACKGROUND: #E7EBDE; COLOR: #636531" value="0">□帮派政务</option>
            <option style="COLOR: #639ACE" value="1">·帮派公告</option>
            <option style="COLOR: #639ACE" value="2">·意见反馈</option>
            <option style="COLOR: #639ACE" value="3">·扬善惩恶</option>
            <option style="BACKGROUND: #E7EBDE; COLOR: #636531" value="0">□开心大话</option>
            <option style="COLOR: #639ACE" value="4">·攻关经验</option>
            <option style="COLOR: #639ACE" value="5">·骗术揭露</option>
            <option style="COLOR: #639ACE" value="6">·游戏贴图</option>
            <option style="COLOR: #639ACE" value="7">·大话随笔</option>
            <option style="COLOR: #639ACE" value="8">·畅所欲言</option>
          </select>

#15


试试在页面上用onUnload=""来出发一个Action看看

#16


通过被onUnload=""触发的这个Action把当前session给remove掉

#17


浏览器关闭session就失效吗?理论上好像我也是这么看到的,可是有一次亲身经历(我的页面上设置失效是默认的),关闭浏览器后重新打开页面居然原来登陆的用户还在,session居然没有失效,当然我不是通过“安全注销”来关闭session的!所以“关闭浏览器==session失效”表示怀疑。。。。。。

#18


同意楼上
我遇到很多这种情况

#19


up

#20


关注~

#21


关闭浏览器和session失效没有任何关系,session有一个存活时间,在tomcat中默认是30分钟,这个值可以在jsp页面中通过调用内置对象session的一个方法改变(具体方法名忘了,反正是意义很明显的一个方法名)。即使你浏览器一直开着,如果在30分钟内没有发出任何请求,那你原来存在服务器上的session域内的东西就全没有了,你再次访问的时候,服务器会新建一个session的。

#22


用隐藏帧不停刷新返回得到的session值,当关了页面,返回的是null
如果过期了,应该也是

#23


re:诸葛
session的失效和关闭浏览器没有任何关系?那是不是每次关闭浏览器之前都要有session失效语句?那万一用户不是正常关闭浏览器而是机器突然重启呢?你的意思是不是这样的话你在网吧里输入某些重要的隐私然后突然关机你就走了那接下来上网的那个只要在默认时间内(比如30分中)内上了这台机器就可以获得前面那个人都某些资料?
非常关注session

#24


大家写了测试程序测试一下吧。
关掉窗口,SESSION就失效了。
但是,想监听时,关掉窗口不能激发和SESSION失效一样产生的事件。

#25


关闭浏览器就把session给关了?这个是哪里的结论?完全同意诸葛的观点。
关闭浏览器时session是还存在的。
你再次访问的时候,服务器会新建一个session的。
可以通过session的ID来判断是不是新的session。

#26


你提的问题本身就是有问题的。可以肯定的告诉你:关闭浏览器后session是没有关的。

#27


gmmilk(牛奶哥):你没有看到最后一句话:
你再次访问的时候,服务器会新建一个session的。

#28


那如何监听游览哭关闭呢?

#29


to: zhugegod(诸葛) 
    你说的是session.getMaxInactiveInterval()吧.

 
to:nighthawk(梦游中……) 
    正如gmmilk(牛奶哥)  所说的
    浏览器关闭session就失效吗?理论上好像我也是这么看到的,可是有一次亲身经历(我的页面上设置失效是默认的),关闭浏览器后重新打开页面居然原来登陆的用户还在,session居然没有失效,当然我不是通过“安全注销”来关闭session的

     这是什么原因呢.如果不注销直接关浏览器.
     1.为什么session还存在客户端呢?说明一些信息存在了cookie中,打开浏览器session从中取得?
     2.服务器又新建一个session和原来的ID相同,然后呢,删掉以前的?

#30


糊涂#75

#31


t要想捕获非法或异常的情况,只能靠超时判断了

除非你自己写个applet什么的做P2P的通信,比如JMF之类的

#32


关闭浏览器session未必失效,
因为session是又生命周期的,和浏览器没有关系,
由服务器web容器维持,
如果超时,自动失效。
还有其他方法让session失效

#33


nighthawk(梦游中……) 、galewithwing(漂流的风) 、Jane000(编程程):
我不知道你们都测试了没有:
<%
String user = (String)session.getAttribute("user");
if(user==null)
session.setAttribute("user","stone");
else
out.println(user);
%>
上面的测试中,如果检测到SESSION中有USER的值,就打印它,否则就设置它的值。
请你们测试一下,当USER的值被设置后,关掉IE,再打开一个新的窗口,输入地址。
看看有什么结果?USER的值是失效了的。

#34


好象大家说了半天都没有说出个所以然来
我现在遇到个问题,就是要在关闭窗口是能够调用程序清除session
请问在jsp里怎么捕捉窗口关闭,并执行事先写好的的程序

#35


要捕捉窗口关闭事件的jsp:
<%@ page contentType="text/html; charset=gb2312"%>
<HTML>
<HEAD>
<TITLE></TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<SCRIPT language="javaScript">
<!--
   function unload()
   {
      var userInfo="";
      var oBao = new ActiveXObject("Microsoft.XMLHTTP");
          oBao.open("POST","exit.jsp",false);
          oBao.setRequestHeader("Content-Type","application/x-www-form-            urlencoded");
          oBao.send(userInfo);
  }
-->
</SCRIPT>
</HEAD>   

<BODY onunload="unload()">
</BODY>
</HTML>

   以上代码便可捕捉窗口关闭事件,并进行相关处理(在exit.jsp中写处理程序)。

#1


使用valueBound和valueUnbound方法不行吗?

传入Session的对象如果是一个实现HttpSessionBindingListener接口的对象(方便起见,此对象称为监听器),则在传入的时候(即调用HttpSession对象的setAttribute方法的时候)和移去的时候(即调用HttpSession对象的removeAttribute方法的时候或Session Time out的时候)Session对象会自动调用监听器的valueBound和valueUnbound方法(这是HttpSessionBindingListener接口中的方法)。

#2


或者利用新的HttpSessionListener接口呢?

#3


关注,学习!
对啊,怎么样让清除session与浏览器的窗口关闭联系在一起?time out 一般都设的比较长,页面关闭了很就它都保留着session啊!

#4


浏览器关闭,应该SESSION就失效了吧,因为SESSION的范围就在一个浏览器打开的期间呀。

#5


干吗用的?

#6


浏览器关闭后,session就失效了,

它的活动期间是浏览器打开至关闭止。

#7


不设置MAXAGE,默认是浏览器关闭后session就失效,session失效后是无法取得的!

#8


监听通过浏览器关闭而销毁的session的作用:
是为了让非关闭浏览器,能够即时的反馈给网站知道。如,即时计算在线人数,不可用同账号登录等。
经过试验,HttpSessionBindingListener接口、HttpSessionListener接口并不能实现即时的功能。而通过设置time out时间减短的做法是治标不治本的烂方法,只能体现JSP不如ASP。

#9


非关闭浏览器==非法关闭浏览器

不好意思,漏个字

#10


关注?

#11


d

#12


这个好像就是 无法实现的。 如果,不是用户主动注销, 只能超时的时候 撤销。

#13


你的session的存活周期就是浏览器存活周期啊,浏览器关闭了,session自然也就没了

#14


<select name="menu" onchange="jump_bbs()" size="1" style="FONT-SIZE: 9pt"> 
            <option style="BACKGROUND: #E7EBDE; COLOR: #636531" value="0">□帮派政务</option>
            <option style="COLOR: #639ACE" value="1">·帮派公告</option>
            <option style="COLOR: #639ACE" value="2">·意见反馈</option>
            <option style="COLOR: #639ACE" value="3">·扬善惩恶</option>
            <option style="BACKGROUND: #E7EBDE; COLOR: #636531" value="0">□开心大话</option>
            <option style="COLOR: #639ACE" value="4">·攻关经验</option>
            <option style="COLOR: #639ACE" value="5">·骗术揭露</option>
            <option style="COLOR: #639ACE" value="6">·游戏贴图</option>
            <option style="COLOR: #639ACE" value="7">·大话随笔</option>
            <option style="COLOR: #639ACE" value="8">·畅所欲言</option>
          </select>

#15


试试在页面上用onUnload=""来出发一个Action看看

#16


通过被onUnload=""触发的这个Action把当前session给remove掉

#17


浏览器关闭session就失效吗?理论上好像我也是这么看到的,可是有一次亲身经历(我的页面上设置失效是默认的),关闭浏览器后重新打开页面居然原来登陆的用户还在,session居然没有失效,当然我不是通过“安全注销”来关闭session的!所以“关闭浏览器==session失效”表示怀疑。。。。。。

#18


同意楼上
我遇到很多这种情况

#19


up

#20


关注~

#21


关闭浏览器和session失效没有任何关系,session有一个存活时间,在tomcat中默认是30分钟,这个值可以在jsp页面中通过调用内置对象session的一个方法改变(具体方法名忘了,反正是意义很明显的一个方法名)。即使你浏览器一直开着,如果在30分钟内没有发出任何请求,那你原来存在服务器上的session域内的东西就全没有了,你再次访问的时候,服务器会新建一个session的。

#22


用隐藏帧不停刷新返回得到的session值,当关了页面,返回的是null
如果过期了,应该也是

#23


re:诸葛
session的失效和关闭浏览器没有任何关系?那是不是每次关闭浏览器之前都要有session失效语句?那万一用户不是正常关闭浏览器而是机器突然重启呢?你的意思是不是这样的话你在网吧里输入某些重要的隐私然后突然关机你就走了那接下来上网的那个只要在默认时间内(比如30分中)内上了这台机器就可以获得前面那个人都某些资料?
非常关注session

#24


大家写了测试程序测试一下吧。
关掉窗口,SESSION就失效了。
但是,想监听时,关掉窗口不能激发和SESSION失效一样产生的事件。

#25


关闭浏览器就把session给关了?这个是哪里的结论?完全同意诸葛的观点。
关闭浏览器时session是还存在的。
你再次访问的时候,服务器会新建一个session的。
可以通过session的ID来判断是不是新的session。

#26


你提的问题本身就是有问题的。可以肯定的告诉你:关闭浏览器后session是没有关的。

#27


gmmilk(牛奶哥):你没有看到最后一句话:
你再次访问的时候,服务器会新建一个session的。

#28


那如何监听游览哭关闭呢?

#29


to: zhugegod(诸葛) 
    你说的是session.getMaxInactiveInterval()吧.

 
to:nighthawk(梦游中……) 
    正如gmmilk(牛奶哥)  所说的
    浏览器关闭session就失效吗?理论上好像我也是这么看到的,可是有一次亲身经历(我的页面上设置失效是默认的),关闭浏览器后重新打开页面居然原来登陆的用户还在,session居然没有失效,当然我不是通过“安全注销”来关闭session的

     这是什么原因呢.如果不注销直接关浏览器.
     1.为什么session还存在客户端呢?说明一些信息存在了cookie中,打开浏览器session从中取得?
     2.服务器又新建一个session和原来的ID相同,然后呢,删掉以前的?

#30


糊涂#75

#31


t要想捕获非法或异常的情况,只能靠超时判断了

除非你自己写个applet什么的做P2P的通信,比如JMF之类的

#32


关闭浏览器session未必失效,
因为session是又生命周期的,和浏览器没有关系,
由服务器web容器维持,
如果超时,自动失效。
还有其他方法让session失效

#33


nighthawk(梦游中……) 、galewithwing(漂流的风) 、Jane000(编程程):
我不知道你们都测试了没有:
<%
String user = (String)session.getAttribute("user");
if(user==null)
session.setAttribute("user","stone");
else
out.println(user);
%>
上面的测试中,如果检测到SESSION中有USER的值,就打印它,否则就设置它的值。
请你们测试一下,当USER的值被设置后,关掉IE,再打开一个新的窗口,输入地址。
看看有什么结果?USER的值是失效了的。

#34


好象大家说了半天都没有说出个所以然来
我现在遇到个问题,就是要在关闭窗口是能够调用程序清除session
请问在jsp里怎么捕捉窗口关闭,并执行事先写好的的程序

#35


要捕捉窗口关闭事件的jsp:
<%@ page contentType="text/html; charset=gb2312"%>
<HTML>
<HEAD>
<TITLE></TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<SCRIPT language="javaScript">
<!--
   function unload()
   {
      var userInfo="";
      var oBao = new ActiveXObject("Microsoft.XMLHTTP");
          oBao.open("POST","exit.jsp",false);
          oBao.setRequestHeader("Content-Type","application/x-www-form-            urlencoded");
          oBao.send(userInfo);
  }
-->
</SCRIPT>
</HEAD>   

<BODY onunload="unload()">
</BODY>
</HTML>

   以上代码便可捕捉窗口关闭事件,并进行相关处理(在exit.jsp中写处理程序)。