各位大侠们,请教大家jsp中怎么记录用户登录系统和离开系统的时间,离开系统可能是session过期,也可能是点击退出系统按钮,还可能是关闭浏览器,这些怎么设置,主要是关闭浏览器的问题,就是记录一个账号访问系统的相关行为的。请各位大侠们多多直接哦,菜鸟我在此谢过

解决方案 »

  1.   

    针对浏览器关闭( 在 body 中加入 onUnload的属性,并调用指定的Js方法,利用Ajax与后台交互记录,关闭浏览器时间)
    function myclose(myrid){
    $.post("clientaction!towindowclose.do",{"chatuser.urandom":myrid},function(ee){

    });

    }<body
    onUnload="myclose('${chatuseru }')>
      

  2.   

    关闭浏览器是有点难做的,正常的退出就不用说了吧,过期嘛,可以创建session侦听啊,每创建一个session,或者一个session销毁的时候都可以知道的.
      

  3.   

    用onUnload处理也不太靠谱,因为用户可能对一个网站开几个窗口,每个窗口都使用同一个session,关闭其中一个,这个情况不应该结束session
      

  4.   

    TO yhzhan01:
       难道不会写个公用的JS文件么,只要所有的网页引用就好了;或者整个网站架构采用统一的JS框架,在框架中定义就好了
      

  5.   

       貌似也存在浏览器兼容的问题吧function window.onbeforeunload() 

    //只支持ie
    if(event.clientX>(document.body.clientWidth-23) && event.clientY < 0 || event.altKey || event.ctrlKey) 

        //业务操作

      

  6.   

    第一个问题:第一种答案:用监听来记录用户的记录.
    第二种答案:假如你用户表有最后登录时间时.可以在登陆方法中更新此时间.第二个问题:退出系统或session失效 就不在说了.上面朋友已经做了很详细的回答;针对关闭浏览器可以用下面这种方法.我项目中目前使用的是这种方法,针对关闭浏览器ALT+F4和任务栏右键关闭都有效;function window.onbeforeunload()  
         {       
            //用户点击浏览器右上角关闭按钮或是按alt+F4关闭
            if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)  
            {  
             window.event.returnValue="确定要退出本页吗?";  
             var xmlhttp =new ActiveXObject("Microsoft.XMLHTTP");    
            xmlhttp.open("GET","sessiondestroy.jsp",false);    
            xmlhttp.send();
            }
            //用户点击任务栏,右键关闭。s或是按alt+F4关闭
            else if(event.clientY > document.body.clientHeight || event.altKey)
            {
             window.event.returnValue="确定要退出本页吗?";  
             var xmlhttp =new ActiveXObject("Microsoft.XMLHTTP");    
            xmlhttp.open("GET","sessiondestroy.jsp",false);    
            xmlhttp.send();
            }
            //其他情况为刷新  
            else
            {  
            
            }  
         }