It’s me

December 6, 2006

JAVASUN.NET 현재로그인 사용자 보기 예제

Filed under: JAVA — rothmans @ 3:37 am

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 : 으샤님
 
 
 

No Comments Yet »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Blog at WordPress.com.