捕獲瀏覽器關閉、重新整理事件,在窗體關閉時從全域性物件裡移除當前使用者
阿新 • • 發佈:2019-02-12
//以下是主頁面的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); } }