SignOnSession.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package com.udapsoft.waf.system.session;
  2. import java.util.Hashtable;
  3. import javax.servlet.http.HttpSession;
  4. import kr.co.hsnc.common.util.ValueObject;
  5. /**
  6. * 로그인한 사용자의 HttpSession을 관리한다.
  7. * this.KEY 변수를 KEY로 사용자를 구분한다.
  8. *
  9. * @author Sunyoup
  10. *
  11. */
  12. public class SignOnSession {
  13. private static String KEY = "USER_ID";
  14. private static Object session = null;
  15. /**
  16. * HttpSession을 보관하는 Hanshtable
  17. * key : USER_ID(String)
  18. * value : UserInfo(ValueObject)
  19. */
  20. private Hashtable<String, HttpSession> session_hash = null;
  21. /**
  22. * USER_ID 를 보관하는 Hashtable
  23. * key : SessionID(String)
  24. * value : USER_ID(String)
  25. */
  26. private Hashtable<String, String> user_id_hash = null;
  27. /**
  28. * 생성자 - private
  29. * Singleton Patterns 사용
  30. */
  31. private SignOnSession() {
  32. this.session_hash = new Hashtable<String, HttpSession>();
  33. this.user_id_hash = new Hashtable<String, String>();
  34. }
  35. /**
  36. * SignOnSession에 Instance를 리턴한다.
  37. * Singleton Patterns 사용
  38. * @return
  39. */
  40. public synchronized static SignOnSession getInstance() {
  41. if( session == null ) {
  42. session = new SignOnSession();
  43. }
  44. return (SignOnSession)session;
  45. }
  46. /**
  47. * KEY name을 리턴
  48. * @return
  49. */
  50. public static String getKeyName() {
  51. return KEY;
  52. }
  53. /**
  54. * 사용자 정보를 KEY로 하는 세션이 존재 여부를 리턴
  55. * @param user
  56. * @return boolean
  57. */
  58. public boolean isExistSession(ValueObject user) {
  59. return this.session_hash.containsKey(user.get(KEY));
  60. }
  61. /**
  62. * 사용자 정보를 KEY로 하는 세션이 존재 여부를 리턴
  63. * @param user
  64. * @return boolean
  65. */
  66. public boolean isExistUserId(String sessionId) {
  67. return this.user_id_hash.containsKey(sessionId);
  68. }
  69. /**
  70. * 해당 사용자의 HttpSession을 리턴한다.
  71. * @param user
  72. * @return
  73. */
  74. public HttpSession getSession(ValueObject user) {
  75. if( isExistSession(user) ) {
  76. return (HttpSession)this.session_hash.get(user.get(KEY));
  77. }
  78. return null;
  79. }
  80. /**
  81. * SessionId에 해당하는 USER_ID를 리턴
  82. * @param sessionId
  83. * @return
  84. */
  85. public String getUserId(String sessionId) {
  86. if( isExistUserId(sessionId) ) {
  87. return (String)this.user_id_hash.get(sessionId);
  88. }
  89. return null;
  90. }
  91. /**
  92. * 사용자의 HttpSession 을 Add한다.
  93. * @param user
  94. * @param session
  95. */
  96. public void addSession(ValueObject user, HttpSession session) {
  97. if( !isExistSession(user) ) {
  98. this.session_hash.put(user.get(KEY), session);
  99. }
  100. if( !isExistUserId(session.getId()) ) {
  101. this.user_id_hash.put(session.getId(), user.get(KEY));
  102. }
  103. }
  104. /**
  105. * 사용자의 HttpSession Remove 한다.
  106. * @param user
  107. */
  108. public void delSession(ValueObject user, String sessionId) {
  109. if( user != null ) {
  110. this.session_hash.remove(user.get(KEY));
  111. this.user_id_hash.remove(sessionId);
  112. }
  113. }
  114. }