又是session老大难,能不能有高手彻底解读一下
用户关闭浏览器的精确时间怎么得到,长时间来一直没解决……

解决方案 »

  1.   

    写一个session的监听类就可以了,设定session的有效时间,超时就会触发一个事件。另外用户如果是正常关闭浏览器的话,可以用javascript发送一个请求,如果是非正常退出的话,是没有办法知道的,因为http是基于非连接的。
      

  2.   

    楼上说的不错,但是如果用户开了相关的网页n张,试问我应该捕获哪个网页的关闭事件呢?
    比如我在a网页中javascript捕获发送,但b,c,d网页没有关闭,其中也有session,如何解决?
      

  3.   

    1 设定一个页面。当用户关掉此页,手动删除session
    2 session 可以存入数据库,手工编写session 会话。
    此法可以准确,有效解决session超时的问题。
    3 通过 url 传递sid 特点:不受cookie ,ip ,端口,服务器 ,交本语言限制。例子:http://freedom5.x168.com (请白天访问)
    登陆进入界面 ,关闭浏览器看看。
      

  4.   

    楼上的方法没什么用吧
    对于1,如果只是关掉某一个页面才删除session的话,估计大家都会做。问题是谁做的网站只有一个页面?其他页面关掉删除session吗?如果别人打开N个页面又如何处理?
    对于2,关于session超时问题,写个监听类就可以了,用得了那么费事吗?
    对于3,session的机制里面已经包括了,如果客户端关掉cookie的话,就是通过URL重写来实现session的功能的!
      

  5.   

    http基于非连接,由客户端触发不现实,flyforlove(为情飞) 说的对,对session确实可以写超时的监听
      

  6.   

    to minisun2000(天生不专一) 
    对于1,如果只是关掉某一个页面才删除session的话,估计大家都会做。问题是谁做的网站只有一个页面?其他页面关掉删除session吗?如果别人打开N个页面又如何处理?
    => 我的意思这个页面为桢。好比聊天室都是通过这种方式实现。对于2,关于session超时问题,写个监听类就可以了,用得了那么费事吗?
    =〉java session 支持侦听类,php,asp,perl 呢?是不是也支持。
    你有没有做过wap应用?看起来也没有。如果你做过就知道,你哪种思维根本就不可行。
    做过移动,联通网关接入的都知道。跨脚本实现SESSION 必须用此方式。MISC 平台 用SERVELET/JSP写的,当用户访问从MISC 平台过渡到SP平台时,所有的SP平台的URL都被重定向。也就是,如果你在JSP/ASP/PHP/PERL 中用到了SESSION ,当你接入后,将会发现SESSION 会丢失。
    对于3,session的机制里面已经包括了,如果客户端关掉cookie的话,就是通过URL重写来实现session的功能的!
    =〉这个我也知道。但是不是所有客户浏览器都支持COOKIE。某些手机会拒绝COOKIE .PHP SESSION 实现本身就是 取不到COOKIE时,通过URL加sid的。
      

  7.   

    to WalkSing(我行) 
    大哥,人家问的是在servlet里如何实现!!!
    还说什么ASP、PHP,看好了,这里是Java Web开发社区,有没有搞错
    说什么PHP SESSION实现本身就是,取不到COOKIE时,通过URL加sid的?难道JSP的SESSION不是这么实现的吗?难道客户浏览器关闭了COOKIE,JSP中的SESSION就不能用了?在JSP的SESSION机制中,如果客户浏览器关闭了COOKIE,一样会在通过URL上加sid的,这就是URL重写,不知道就不要乱说!
      

  8.   

    晕,楼主参考一下我的那个帖子
    http://community.csdn.net/Expert/TopicView.asp?id=3804877//判断session过期离开当前页面可以用js事件处理
    <body onUnload="..">