JAVASUN.NET 현재로그인 사용자 보기 예제1
CurLogin.java -> Session Binding Listener
SessionManager -> 현재 사용자를 Hashtable에 저장
loginCheck.jsp -> 사용자 로그인 처리 페이지
logout.jsp -> 사용자 로그아웃 페이지
curClients.jsp -> 현재 로그인 사용자 나열 페이지
———————– CurLogin.java———————-
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CurLogin implements HttpSessionBindingListener {
String loginid;
String sessionid;
SessionManager sm;
public CurLogin(String loginid){
this.loginid = loginid;
}
//세션에 값이 추가될때 발생하는 이벤트 메소드
public void valueBound(HttpSessionBindingEvent event) {
HttpSession ss = event.getSession();
sessionid = ss.getId();
sm = SessionManager.getInstance();
//Hashtable에 세션아이디와 로그인 아이디를 저장합니다.
sm.addClient(sessionid,loginid);
}
//세션에 값이 소멸될때 발생하는 이벤트 메소드
public void valueUnbound(HttpSessionBindingEvent event) {
HttpSession ss = event.getSession();
sessionid = ss.getId();
sm = SessionManager.getInstance();
//Hashtable에서 세션아이디 키값으로 삭제 합니다.
sm.removeClient(sessionid);
}
}
—————————SessionManager.java————————-
import java.util.*;
public class SessionManager{
public static SessionManager instance;
public Hashtable clients;
static synchronized public SessionManager getInstance() {
if (instance == null) {
instance = new SessionManager();
}
return instance;
}
private SessionManager() {
init();
}
private void init(){
clients = new Hashtable();
}
//Hashtable에 로그인 사용자 추가
public void addClient(String sessionid,String id)
{
clients.put(sessionid,id);
}
//Hashtable에 로그인 사용자 삭제
public void removeClient(String sessionid){
clients.remove(sessionid);
}
//현재 저장된 내용을 전부 반환한다.
public Hashtable getClient(){
return clients;
}
}
##############################################################
지금까지 현재로그인 사용자 예제에서 사용돼는 클래스 파일을 정의했습니다.
다음 예제에서는 jsp에서 어떻게 응용하는지 알아보겠습니다.
##############################################################
이번강좌는 이전강좌에 정의된 클래스 파일을 이용하서 JSP 페이지에서 현재로그인 사용자를 알아보겠습니다.
—————————-loginCheck.jsp——————————
~~중략
이부분은 여러분들이 직접 회원가입된 로그인 사용자인지 체크해주시구여..
~~중략
if 만약 아이디와 패스워드가 전부 일치한다면
{
//id => 로그인 사용자 아이디
CurLogin curLogin = new CurLogin(id);
//세션이 소멸될 시간을 설정해 줍니다.
session.setMaxInactiveInterval(60*10);
//세션에 추가
session.setAttribute(“curLogin”,curLogin);
}//curLogin객체를 세션에 추가하면 로그인 사용자 아이디가 자동으로 SessionManager의 Hashtable에 추가가됩니다.
—————————-logout.jsp——————————
로그아웃시에는 세션에 추가된 Object만 삭제를 해주면 됩니다.
session.removeAttribute(“curLogin”);
//세션에서 내용이 삭제되면서 자동으로 SessionManager에 저장된 아이디값도 삭제 됩니다.
—————————-현재로그인사용자보기.jsp————————–
<table width=”100%” border=”0″ cellpadding=”1″ cellspacing=”1″ bgcolor=”#DEE8DB”>
<tr><td bgcolor=”#DEE8DB” align=center>현재로그인</td></tr>
<%
//SessionManager의 인스턴스를 받아옵니다.
SessionManager sm = SessionManager.getInstance();
//아이디가 저장된 Hashtable을 받아옵니다.
Hashtable hash = sm.getClient();
Enumeration em = hash.elements();
while(em.hasMoreElements()){
%>
<tr>
<td align=center height=15 bgcolor=white>
<!– 아이디를 하나씩 읽어옵니다. –>
<font color=”blue”><%=em.nextElement()%></font>
</td>
</tr>
<%}%>
</table>
##############################################################
여러분들에게 이해가 잘 됐는지 모르겠군여..
암튼 이거만들라고 몇일동안 고생했네염.. ㅋㅋ
##############################################################
from : http://www.javasun.net/
writer : 으샤님