1种是 关闭浏览器 时触发浏览器的 window.onbeforeunload事件 清空session
但是关闭浏览器有很多 方法第二种 看到这个 不错要判断客户是否已经关闭浏览器只能通过间接的方法来做,比如在客户端放个小iframe,这个iframe里的页面定时的去服务端请求一个页面,这个页面就是用来刷新这个客户端的session的最新时间,在服务端作个论询,看哪个session的最后更新时间超时了,就认为这个session对应的客户端超时了可是服务端代码 不知道怎么实现 谁有类似的例子 能给份不?

解决方案 »

  1.   

    试试用SessionListener,这个接口用于session的监听
      

  2.   

    或者,在数据库中给每个用户加个标签,当此用户登录时,flag=true;否则flag=false。其他程序要判断此用户的状态只要检索flag就行了。
      

  3.   

    那个使用flag = true的做法不可取
    使用监听器的话嘛还是很可以的
    你也可以按照ls的做一个在线列表,不过这需要客户端的支持
    也就是说你需要做一个客户端,而服务端需要另外开启线程进行轮询
    如果客户端异常关闭例如网线断了什么的,就不好办了
    你可以使用监听器进行制作
    试试吧
      

  4.   


    我的意思每创建个session都将用户的信息同样保存一份到application中(application保存全部用户的信息 用个集合或者MAP) 然后每次更新时间是针对SESSION的对象更新时间的 更新完毕后通过application将所有的用户的信息都读出来挨个检查 可惜我没做过类似的东西 只是有这个想法 session和application中持有同样的对象信息 更改一个application里应该也能更改吧
    用监听器实现也行 因为我不知道LZ所谓的用户状态是存储在数据库中还是什么其他地方