日期:2014-05-17 浏览次数:20610 次
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script type="text/javascript"> function end(){ alert("aaa"); //可以调用一个form的submit()方法,或者调用一个ajax 向后台提交请求 } </script> <title>MyHtml.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body onunload="end();"> </body> </html>
------解决方案--------------------
session监听类:
package com.banner.servlet; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; public class OnlineUserBindingListener implements HttpSessionBindingListener { String username; public OnlineUserBindingListener(){ } public OnlineUserBindingListener(String username){ this.username=username; } public void valueBound(HttpSessionBindingEvent event) { HttpSession session = event.getSession(); ServletContext application = session.getServletContext(); // 把用户名放入在线列表 List onlineUserList = (List) application.getAttribute("onlineUserList"); // 第一次使用前,需要初始化 if (onlineUserList == null) { onlineUserList = new ArrayList(); } onlineUserList.add(this.username); application.setAttribute("onlineUserList", onlineUserList); } public void valueUnbound(HttpSessionBindingEvent event) { HttpSession session = event.getSession(); ServletContext application = session.getServletContext(); // 从在线列表中删除用户名 List onlineUserList = (List) application.getAttribute("onlineUserList"); onlineUserList.remove(this.username); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println(this.username + "退出系统。"); System.out.println("退出时间"+sdf.format(new Date())); } }
------解决方案--------------------
刚才看了篇文章 关于判断退出浏览器的 用Javascript代码window.oncolose来监视浏览器的关闭动作,然后向服务器发送一个请求来删除session。不过对于浏览器崩溃或强行杀死进程等非常手段是不能实现的。。。。 具体的怎么操作自己再百度下吧!!!!
------解决方案--------------------
http://topic.csdn.net/t/20010528/21/138139.html
------解决方案--------------------
哈哈,这个问题我上个项目也遇到了,好在我解决了,解决这个问题有几个步骤
1、有拿到当前登录者的信息,如userid,这个容易,用session,当用户一进入页面时,用jspuserbean或servlet更新数据库中的一个字段,就是是否在线,(如isonline,0是离线,1是在线,这里isonline=1)。
2、用dwr将session中用户名字显示出来,在页面中不断刷新,dwr有这个功能。
3、写一个session监听。
4、将web.xml中session的过期时间设置为1分钟,这样用户只要关了浏览器,session在1分钟后将消失,session监听器将监听到,些时更新数据库isonline=0.
上面的第2个步骤有很多实现方式,其实这一步是最重要的,我一开始第2步用的jqurey的心跳提示,不会的话可以网上查下,很简单,后来觉得dwr更正规一些,嘿嘿,就学了下dwr,3个小时搞定。
再有问题可以加我qq:79312510
------解决方案--------------------