Für ein Konto, das nur eine Person gleichzeitig anmelden kann, kann es durch die folgende Methode erreicht werden:
1. Fügen Sie den Benutzer zu einer ArrayList hinzu, wenn sich der Benutzer anmeldet
2. Wenn Sie sich erneut anmelden, prüfen Sie, ob ein Benutzer in ArrayList vorhanden ist. Wenn der Benutzer bereits in ArrayList existiert, wird er von der Anmeldung blockiert.
3. Wenn der Benutzer ausgeht, muss der Benutzer aus der ArrayList gelöscht werden, die in drei Situationen unterteilt ist
① Verwenden Sie die Taste des Abmeldens, um normal zu beenden
② Klicken Sie auf die Schaltfläche "Browser" oder verwenden Sie Alt+F4, um das Beenden zu beenden, und Sie können JavaScript verwenden, um das Seitenschließereignis zu erfassen.
Führen Sie eine Java -Methode aus, um Benutzer in ArrayList zu löschen
③ Ungewöhnliches Abmelden, z. B. einen Absturz oder einen plötzlichen Absturz auf dem Client -System, können Sie den Benutzer verwenden, der der Sitzung entspricht, um die Sitzung zu löschen, wenn die Sitzung nicht ab und zu aktiv ist, sodass der Benutzer eine Weile warten muss, bevor Sie sich normal anmelden.
In der Anmeldung definiert:
// Wird verwendet, um alle Konten zu speichern, die auf der serveren Seite öffentliche statische Listenanmeldung angemeldet sind.
Login () Anmeldemethode:
// Setzen Sie die Sitzungszeit für die Sitzung auf 30 Minuten an. if (account.getAccountID (). Equals (existaccount.getAccountID ()) {return "verweigert";}} // Wenn der Benutzer ein Protokoll der SessionID zu einem Konto -Objekt hinzufügen // später ③ Sie müssen das entsprechende Benutzerkonto löschen. Rückgabe "Login";① Verwenden Sie die Taste des Abmeldens, um normal zu beenden
Logout () Beendenmethode:
if (logonAccounts == null) {logonAccounts = new ArrayList ();} // Löschen Sie den Benutzer in ArrayList ⑴ für (int i = 0; i <logonAccounts.size (); i ++) {account existaccount = (Konto) logonAcnocts.gets (i); if (account.getAccountID (). Equals (existaccount.getAccountID ()) {logonAccounts.remove (Konto);}}② Klicken Sie auf die Schaltfläche "Browser" oder verwenden Sie Alt+F4, um zu beenden:
Ein Fenster wird im Hintergrund angezeigt, löscht den Benutzer in der ArrayList im Popup-Fenster
Funktionsfenster. Ereignis.Clienty <0 || Ereignis.Altkey) {window.open ('accountUnbound.jsp', '', 'Höhe = 0, width = 0, top = 10000, links = 10000');}}AccountUnbound.jsp: Löschen Sie den Benutzer in ArrayList im Popup-Fenster
<%Account Account = (Account) request.getSession (). GetAtTribute ("account"); if (Account! i ++) {Konto existaccount = (Konto) logonAccounts.get (i); if (conto.getAccountID (). Equals (existaccount.getAccountID ()) {logonAccounts.remove (Konto);}}}%>Um sicherzustellen, dass der obige Code ausgeführt werden kann, schließen Sie dieses Popup-Fenster nach 3 Sekunden (auch in AccountUnbound.jsp).
<Script> setTimeout ("closewindow ();", 3000); Funktion closewindow () {window.close ();} </script>③ Machen Sie die Anmeldung implementieren httpSessionListener und implementieren Sie Sessioncreated- und SessionDestroyed -Methoden. Benutzer in ArrayList in SessionDestroyed löschen (wenn der Benutzer länger als 30 Minuten inaktiv ist, wird diese Methode ausgeführt).
public void sessionDestroyed (httpSessionEvent Ereignis) {// Erhalten Sie die Sitzung, wenn Sie inaktiv inaktiv sind, und löschen Sie den Benutzer in der entsprechenden LogonAccounts String SessionID = Event.getSession (). getId (); für (int i = 0; i <logonAccounts.SIZE (); i ++) {account existAccount = (Konto) logonAccounts.get (i); if (account.getSessionId (). Equals (existaccount.getSessionId ()) {logonAccounts.remove (Konto);}}}Notiz:
Da das Popup-Fenster durch die Firewall- oder Sicherheitssoftware leicht blockiert wird, kann das Popup-Fenster nicht aufgetaucht werden. Daher kann das kurzfristige Anmelde nicht angemeldet werden. In diesem Fall kann Ajax anstelle des Popup-Fensters verwendet werden. Der Code, der den Benutzer im Hintergrund löscht, wird ausgeführt, wird jedoch nicht durch die Firewall eingeschränkt:
<Script> // <! [cdata [var http_request = false; Funktion MakeRequest (url) {http_request = false; if (window.xmlhttprequest) {// Mozilla, Safari, ... http_request = new xmlhttprequest (); oder ActiveXObject ("microsoft.xmlhttp");} catch (e) {}}} if (! Http_request) {alert ('aufgeben :( Kann keine xmlhttp -Instanz erstellen; true); {makeRequest ('accountUnbound.jsp');} //]]> </script> Es gibt viele detaillierte Erklärungen für den obigen Ajax -Code im Internet. Das Hinzufügen zum OnbeForeUnload () Browser Close-Ereignis funktioniert im Hintergrund sehr gut, sodass sich das Problem, dass Pop-ups manchmal ungültig sind, keine Sorgen machen müssen.
Nachdem dieser Code verwendet wird, schließt der JS-Code in der obigen cocountUnbound.jsp im Fenster Popup-Fenster (). wird nicht mehr benötigt.
Das obige ist die Java -Web -Implementierung der QQ -Login -Funktion, die der Editor Ihnen vorstellt. Ein Konto kann nur eine Person gleichzeitig anmelden. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!