Session을 이용하여,
중복로그인 체크 및 현재 접속자를 알수 있는 방법이다.
1. SessionChecker 클레스를 하나 만든다.
bound/unbound event를 캐치하기 위해서...
=======================================================================================
import javax.servlet.http.*;
public class SessionChecker{
public void setSession(HttpSession session){
if(session.getAttribute("listener") == null) {
session.setAttribute("listener", new CustomBindingListener());
}
}
}
class CustomBindingListener implements HttpSessionBindingListener {
public void valueBound(HttpSessionBindingEvent event) {
System.out.println("BOUND as " + event.getName() + " to " + event.getSession().getId());
//DB user table에 해당user의 sessionID를 저장한다. => login
}
public void valueUnbound(HttpSessionBindingEvent event) {
System.out.println("UNBOUND as " + event.getName() + " to " + event.getSession().getId());
//DB user table에 해당user의 sessionID를 삭제한다. => logout
}
}
=======================================================================================
2. jsp에서 클래스 호출
현재 session을 setting 한다..
<jsp:useBean id="sc" class="SessionChecker" scope="application" />
<%
sc.setSession(session);
%>
이제 준비는 끝났다.
로그인/로그아웃시 해당 user의 sessionID가 DB에 저장됨으로,
- 로그인시 sessionID를 확인하여 값이 있으면 로그인, 없으면 로그아웃
- sessionID값이 있는 사용자만 읽어오면 현재 접속자수와 접속자 정보를 알 수 있다.
참고 할 것은...
정상적인 로그아웃일 경우에도 sessionID를 삭제 처리해주는 쌘쓰~~
[출처] [TIP]자바에서 현재 접속자 확인방법 및 중복로그인 체크|작성자 짱가