동시에 한 사람 만 로그인 할 수있는 계정의 경우 다음 방법으로 달성 할 수 있습니다.
1. 사용자가 로그인 할 때 Arraylist에 사용자를 추가하십시오.
2. 다시 로그인 할 때 ArrayList에 사용자가 있는지 확인하십시오. 사용자가 이미 ArrayList에 존재하면 로그인이 차단됩니다.
3. 사용자가 종료되면 사용자는 ArrayList에서 삭제되어야하며 세 가지 상황으로 나뉩니다.
logout 버튼을 사용하여 정상적으로 종료하십시오
browser 브라우저 닫기 버튼을 클릭하거나 Alt+F4를 사용하여 종료하면 JavaScript를 사용하여 페이지 닫기 이벤트를 캡처 할 수 있습니다.
arraylist에서 사용자를 삭제하기 위해 Java 메소드를 실행하십시오
class 클라이언트 시스템의 충돌 또는 갑작스런 충돌과 같은 비정상적인 로그 아웃은 세션에 해당하는 사용자를 사용하여 세션이 한 번에 한 번씩 활성화되지 않은 경우 세션을 삭제할 수 있으므로 사용자가 정상적으로 로그인하기 전에 잠시 기다려야합니다.
로그인으로 정의 :
// 서버쪽에 로그인 된 모든 계정을 저장하는 데 사용됩니다. 공개 정적 목록 LogonAccounts;
로그인 () 로그인 방법 :
// 세션 비 활동 시간을 30 분으로 설정 요청. getSession (). setMaxInactiveInterval (60*30); if (logonAccounts = null) {logonAccounts = new ArrayList ();} // arraylist에 사용자가 있는지 확인하십시오 (int i = 0; i <logonAccounts. (계정) logonaccounts.get (i); if (ac logonaccounts.add (계정); "로그인"을 반환합니다.logout 버튼을 사용하여 정상적으로 종료하십시오
로그 아웃 () 종료 방법 :
if (logonAccounts == null) {logonAccounts = new ArrayList ();} // arrayList ⑴에서 사용자를 삭제합니다. if (acbrowser 브라우저 닫기 버튼을 클릭하거나 Alt+F4를 사용하여 종료하십시오.
창이 백그라운드에서 팝업되어 팝업 창에서 Arraylist에서 사용자를 삭제합니다.
function window.onbeforeunload () {// 닫기 버튼을 통해 종료할지 또는 alt+f4 // onbeforeunload 이벤트가 새로 고침을 위해 트리거되면 다음 if 문은 if (event.clientx> boduble.clientWidth &&를 실행하지 않습니다. event.clienty <0 || event.altkey) {window.open ( 'acAccountUnbound.jsp : 팝업 창에서 ArrayList에서 사용자를 삭제합니다.
<%계정 계정 = (계정) requestsession (). getAttribute ( "계정"); if (ac logonaccounts.size (); i ++) {ac위의 코드를 실행할 수 있도록 3 초 후이 팝업 창을 닫으십시오 (AccountUnbound.jsp에도).
<cript> settimeout ( "closeWindow ();", 3000); 함수 cropedewindow () {window.close ();} </script>httpssessionListener를 구현하고 SessionCreated 및 SessionDestroyed Methods를 구현합니다. SessionDestroyed에서 ArrayList에서 사용자 삭제 (사용자가 30 분 이상 비활성 인 경우이 방법이 실행됩니다)
public void sessiondestroyed (httpsessionevent event) {// 비활성이있을 때 sessionId를 가져오고 해당 logonaccounts string = event.getSession (). getId ()에서 사용자를 삭제합니다. for (int i = 0; i <logonaccounts.size (); i ++) {ac if (ac메모:
위의 경우 방화벽 또는 보안 소프트웨어에 의해 팝업 창이 쉽게 차단되므로 팝업 창을 팝업 할 수 없으므로 단기 로그인을 로그인 할 수 없습니다.이 경우 AJAX를 팝업 창 대신 사용할 수 있습니다. 백그라운드에서 사용자를 삭제하는 코드는 실행되지만 방화벽에서는 제한되지 않습니다.
<cript> // <! {http_request.overRidemImeType ( 'text/xml');}} else if (window.ActiveXObject) {// Ietry {http_Request = new ActiveXObject ( "msxml2.xmlhttp")) {http_request = 새로운 ActiveXObject ( "microsoft.xmlhttp");} catch (e) {}}} if (! http_request) {alert ( '포기 :( xmlhttp instance');} http_request.onridestatechange = alertcontents (http_eet.opeS); true); http_request.send (null);} function alertContents () {if (http_request.readystate == 4) {if (http_request.status == 200) {window.close (); {MakeRequest ( 'AccountUnbound.jsp');} //]]> </script> 인터넷에 위의 Ajax 코드에 대한 자세한 설명이 많이 있습니다. onbeforeunload () 브라우저 클로즈 이벤트에 추가하면 백그라운드에서 매우 잘 작동하므로 팝업이 때때로 유효하지 않은 문제에 대해 걱정할 필요가 없습니다.
이 코드를 사용한 후 위의 AccountUnbound.jsp의 JS 코드는 팝업 창을 닫습니다. 더 이상 필요하지 않습니다.
위는 편집자가 소개하는 QQ 로그인 기능의 Java 웹 구현입니다. 한 계정은 동시에 한 사람 만 로그인 할 수 있습니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!