123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package com.udapsoft.waf.system.session;
- import java.util.Hashtable;
- import javax.servlet.http.HttpSession;
- import kr.co.hsnc.common.util.ValueObject;
- /**
- * 로그인한 사용자의 HttpSession을 관리한다.
- * this.KEY 변수를 KEY로 사용자를 구분한다.
- *
- * @author Sunyoup
- *
- */
- public class SignOnSession {
- private static String KEY = "USER_ID";
- private static Object session = null;
- /**
- * HttpSession을 보관하는 Hanshtable
- * key : USER_ID(String)
- * value : UserInfo(ValueObject)
- */
- private Hashtable<String, HttpSession> session_hash = null;
- /**
- * USER_ID 를 보관하는 Hashtable
- * key : SessionID(String)
- * value : USER_ID(String)
- */
- private Hashtable<String, String> user_id_hash = null;
-
- /**
- * 생성자 - private
- * Singleton Patterns 사용
- */
- private SignOnSession() {
- this.session_hash = new Hashtable<String, HttpSession>();
- this.user_id_hash = new Hashtable<String, String>();
- }
- /**
- * SignOnSession에 Instance를 리턴한다.
- * Singleton Patterns 사용
- * @return
- */
- public synchronized static SignOnSession getInstance() {
- if( session == null ) {
- session = new SignOnSession();
- }
- return (SignOnSession)session;
- }
- /**
- * KEY name을 리턴
- * @return
- */
- public static String getKeyName() {
- return KEY;
- }
-
- /**
- * 사용자 정보를 KEY로 하는 세션이 존재 여부를 리턴
- * @param user
- * @return boolean
- */
- public boolean isExistSession(ValueObject user) {
- return this.session_hash.containsKey(user.get(KEY));
- }
- /**
- * 사용자 정보를 KEY로 하는 세션이 존재 여부를 리턴
- * @param user
- * @return boolean
- */
- public boolean isExistUserId(String sessionId) {
- return this.user_id_hash.containsKey(sessionId);
- }
-
- /**
- * 해당 사용자의 HttpSession을 리턴한다.
- * @param user
- * @return
- */
- public HttpSession getSession(ValueObject user) {
- if( isExistSession(user) ) {
- return (HttpSession)this.session_hash.get(user.get(KEY));
- }
- return null;
- }
- /**
- * SessionId에 해당하는 USER_ID를 리턴
- * @param sessionId
- * @return
- */
- public String getUserId(String sessionId) {
- if( isExistUserId(sessionId) ) {
- return (String)this.user_id_hash.get(sessionId);
- }
- return null;
- }
-
- /**
- * 사용자의 HttpSession 을 Add한다.
- * @param user
- * @param session
- */
- public void addSession(ValueObject user, HttpSession session) {
- if( !isExistSession(user) ) {
- this.session_hash.put(user.get(KEY), session);
- }
- if( !isExistUserId(session.getId()) ) {
- this.user_id_hash.put(session.getId(), user.get(KEY));
- }
- }
- /**
- * 사용자의 HttpSession Remove 한다.
- * @param user
- */
- public void delSession(ValueObject user, String sessionId) {
- if( user != null ) {
- this.session_hash.remove(user.get(KEY));
- this.user_id_hash.remove(sessionId);
- }
- }
- }
|