jsp項目中實現關閉瀏覽器後吊線,只要不關閉不操作也保持線上
來源:互聯網
上載者:User
js|瀏覽器|項目|線上 最近一個項目中用jsp實現使用者登入,當然是使用session來保持。這個用implements HttpSessionBindingListener介面來實現,這個是我寫的簡要代碼。
public class OnLineUser implements HttpSessionBindingListener {
private NewUser newUser=null;
public OnLineUser() {
newUser=new NewUser();
}
public boolean existUser(String str)
{
return false;
}
public void valueBound(HttpSessionBindingEvent e) {
String tempName=e.getName();
//Integer m=new Integer(tempName);
newUser.setUserName(tempName);
try {
newUser.updateOnline();
}
catch (Exception ex) {
}
System.out.println("使用者"+tempName+"上限");
}
public void valueUnbound(HttpSessionBindingEvent e) {
String tempName=e.getName();
//Integer m=new Integer(tempName);
newUser.setUserName(tempName);
try {
newUser.updateUnline();
}
catch (Exception ex) {
}
System.out.println("使用者"+tempName+"下限");
}
}
在登入處理的servlet中調用
OnLineUser onLineUser=new OnLineUser();
request.getSession(false).setAttribute(login_no,onLineUser);
其中login_no是變數是登入名稱稱。同時要把request.getSession(false)值設為false,他有true和false兩個值,true為如果如果沒有相同的session則建立。如果有則覆蓋,false則沒有則建立有則不建立,我要用這個實現單點登入所以用了false。這樣就可以監聽你建立的session了。如果session逾時,則執行valueUnbound方法。建立session則執行valuebound方法。我在這裡是對人員的一個狀態欄位變更。這樣當這個使用者線上的時候,另一個使用者在另外的機子上線時在登入頁面我就可以進行判斷了。這方面的資料網上有很多,後來遇到問題就是當設定session逾時時間為1分鐘時。使用者不正常退出可以一分鐘後可以正常改變使用者下線狀態,但是使用者如果1分鐘內電腦沒有操作也同時會弔線,我在網上找了很長時間,沒有這方面的資料。後來我用我的一個架構(我的程式用的是架構,我用的是底部架構)
javax.servlet.http.HttpSession session2 = request.getSession(false);
com.chinantn.oa.util.OASession oasession =
(com.chinantn.oa.util.OASession) session2.getAttribute("oasession");
這個是我的登入頁面用的一個處理session的類。然後在這個頁面中加入
<meta http-equiv="refresh" content="30;URL=foot.jsp">.做成自動重新整理。
間隔時間小於session逾時時間。主要目的是如果頁面在逾時時間內沒有訪問的話用這個自動重新整理訪問一下session這樣來解決問題。