후다다닥
276
2017-11-14 21:22:16.0 작성 2017-11-14 21:23:26.0 수정됨
4
80

jsp&서블릿에서 다른 로그인 정보를 한곳에서 띄우기


말그대로 로그인한 모든 사용자에 대한 정보를 모든 사용자에게 보여주고 싶습니다.

세션이 생성될 당시 어느 하나의 변수에 저장하고 그 변수에 있는 값들을 각 세션들에게 보여주고 싶은데 방법이있을까요?

음, 접속한 모든 유저를 리스트화 시켜서 보여주는 작업중입니다.

즉 A라는 로그인 사용자와 B라는 로그인 사용자가 로그인을 하게 되면 서버에선 현재 A,B사용자가 접속했다는것을 A와 B 사용자에게 보여주고 싶습니다.

2
2
  • 답변 4

  • 포포핀
    94
    2017-11-15 09:20:14.0

    HttpSessionListener 등록해서 

    sessionCreated 메소드에서 세션 가져와서 Map이나 List 같은데 저장하면 될 것 같습니다.

    sessionDestroyed 에서는 세션 삭제해주시고요

    0
  • 후다다닥
    276
    2017-11-15 10:40:19.0
    답변 감사드립니다. 알아본 결과 sessionCreated 함수 같은 경우 리턴형이 void로 implements되어있고 리스너 특성상 객체를 만들어서 데이터를 불러오기도 힘들거 같은데 sessionCreated 메소드에서 생성한 Map이나 List를 컨트롤러 단이나 view 단에서 어떻게 가져올 수 있을까요..?
    0
  • 포포핀
    94
    2017-11-15 13:03:20.0

    인스턴스 변수로 선언하고 가져오면 됩니다.

    public class SessionRegister implements HttpSessionListener {
      private Map<String, HttpSession> sessionMap = ConcurrentHashMap<String, HttpSession>
    
     public void sessionCreated() {
     ....
     }
    
     public  Map<String, HttpSession>  getSessions() {
      return this.sessionMap;
     }
    }

    가져올땐 getSessions() 메소드로 가져오면되겠죠

    0
  • 후다다닥
    276
    2017-11-16 10:49:46.0

    만약 controller에서 해당 데이터를 가져오고 싶을시 SessionRegister객체를 만들어서 getSessions 메소드를 호출하는 형태인건가요? 시도해보니 SessionRegister aa = new SessoinRegister(); 이렇게 선언하면 객체를 못가져올 뿐더러 리스너가 호출되는 시점의 객체를 가져와야 의미가 있는거아닌가요 ㅠ? 초보자라 이해를 잘못해서 죄송합니다..

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.