日期:2014-05-18  浏览次数:20715 次

请教如何实现关闭浏览器既关闭session的问题?(包括任务管理器关闭进程的情况)
如题。

上网查了一些资料,发现大部分方法是像如下代码所示,大概可以实现关闭浏览器时使session失效。

<script       language=javascript>      
    function       window.onunload()      
    {      
    if       (event.clientX       <0       &&       event.clientY       <       0){      
    var       dlgStyle       =       "dialogHeight:100px;dialogWidth:300px;status:no;scroll:no;help:no; ";      
    showModalDialog( "right13.jsp?username= <%=username%> ",       null,       dlgStyle);      
    }      
    }    

  right13.jsp:      
       
    <%   if(request.getParameter( "username ")       !=       null)       {      
    onlineuser.deleteUser((String)request.getParameter( "username "));//清SESSION      
       
       
    }      
    %>      
    <html>      
    <body>      
    <table> <tr> <td       style= "font-size:10.5pt "       height=80       width=300       align= "center "       valign= "center "> 请稍等,系统正在退出...... </td> </tr> </table>      
    <script       language= "JavaScript ">      
    <!--      
    setTimeout( "close(); ",       1000);      
    -->      
    </script>    

===============
那如果是任务管理器中直接关闭进程,怎么实现,请教有经验的朋友!

------解决方案--------------------
好像不错啊。顶啦
------解决方案--------------------
实际上关闭浏览器自动会关闭session,至少IE是这样的
你说关闭浏览器把进城关了,是不合理的,因为客户端可能同时开了N个页面
------解决方案--------------------
这个问题我以前找过,没有完美的解决方案.
如果你想在服务器端实时统计在线人数这类问题的话,倒是有一个方法.
那就是在一个页面中写上脚本,每隔几秒钟向服务器发送一次消息,说明还在线.
然后每个页面包含这个页面.
这样,如果服务器发现某个session过了挺长时间(自己测试后定)还没有发送消息过来,那就认为已经不在线.
------解决方案--------------------
1.不合理
2.做不到
------解决方案--------------------
实际上关闭浏览器自动会关闭session,至少IE是这样的
你说关闭浏览器把进城关了,是不合理的,因为客户端可能同时开了N个页面
--------------同意
------解决方案--------------------
ZW_Ren(任再旺)的方法太牛X了

------解决方案--------------------
用Keep-Alive
------解决方案--------------------
设置session的timeout 这样到了timeout的时间 就清除这个session了

立即关闭 按你那么操作 肯定做不到
------解决方案--------------------