//以下是主页面的js代码,转的 <script type="text/javascript"> //页面即将关闭事件 function window.onbeforeunload() { //用户点击浏览器右上角关闭按钮或是按alt+F4关闭 if(event.clientX > document.body.clientWidth && event.clientY<0 || event.altKey) { location.href="UserInfoServlet?flag=exit"; } //用户点击任务栏,右键关闭。s或是按alt+F4关闭 else if(event.clientY > document.body.clientHeight || event.altKey) { location.href="UserInfoServlet?flag=exit"; } //其他情况为刷新 else { } } </script>
//以下是servlet里的代码,自己写的 else if(flag.equals("exit")) { if(session.getAttribute("currentUser")!=null) { String username=((UserInfo)session.getAttribute("currentUser")).getYhName(); //从全局对象里移除该用户 List<UserInfo> list=(List<UserInfo>)application.getAttribute("allOnLineUsers"); for(int i=0;i<list.size();i++) { UserInfo u=list.get(i); if(username.equals(u.getYhName())) { list.remove(i); break; } } //将改变后的全局集合重新放入全局对象 application.setAttribute("allOnLineUsers",list); //从session里移除当前用户 session.removeAttribute("currentUser"); } else { //跳转 request.getRequestDispatcher("login/login.jsp"). forward(request,response); } }