본문 바로가기

개발/Java

[JAVA - WEB] 서블릿 리스너(Listener)

728x90
반응형
서블릿 관련 Listener API

 

자바 프로그램의 이벤트 핸들러처럼 서블릿에서도 서블릿에서 발생하는 이벤트에 대해 적절한 처리를 해주는 여러가지 리스너를 제공합니다.

 

Listener 메서드 기능
ServletContextAttributeListener attributeAdded()
attributeRemoved()
attributeReplaced()
Context 객체에 속성 추가/제거/수정 이벤트 발생 시 처리
HttpSessionListener sessionCreated()
sessionDestroyed()
세션 객체의 생성/소멸 이벤트 발생 시 처리
ServletRequestListener requestInitialized()
requestDestroyed()
클라이언트 요청 이벤트 발생 시 처리
ServletRequestAttributeListener attributeAdded()
attributeRemoved()
attributeReplaced()
요청 객체에 속성 추가/제거/수정 이벤트 발생 시 처리
HttpSessionBindingListener valueBound()
valueUnbound()
세션에 바인딩/언바인딩 객체를 알려주는 이벤트 발생 시 처리
HttpSessionAttributeListener attributeAdded()
attributeRemoved()
attributeReplaced()
세션에 속성 추가/제거/수정 이벤트 발생 시 처리
ServletContextListener contextInitialized()
contextDestroyed()
컨텍스트 객체의 생성/소멸 이벤트 발생 시 처리
HttpSessionActivationListener sessionDidActivate()
sessionWillPassivate()
세션의 활성화/비활성화 이벤트 발생 시 처리

 

 

 

HttpSessionListener 예제

 

리스너를 생성할 패키지를 선택하고 마우스 오른쪽 클릭 후 New - Listener 를 선택합니다.

 

 

Class name 을 입력하고 Next 를 클릭합니다.

 

 

오른쪽에 ... HttpSessionListener 로 되어있는 체크 박스를 선택하고 Next 를 클릭합니다.

 

 

HttpSessionListener 가 맞는지 확인한 후 Finish 를 클릭합니다.

 

 

@WebListener 애너테이션으로 리스너가 생성된 것을 확인할 수 있습니다.

 

 

세션이 생성 되었을때나 소멸 되었을때 처리를 할 수 있으니 사용자가 로그인 했을때나 로그아웃을 했을때 전체 접속자 수를 카운팅 하는 것을 할 수 있겠네요.

 

@WebListener
public class ListenerTest implements HttpSessionListener {
	...
	static int total_user = 0;	// 전체 접속자 수

	/**
	 * @see HttpSessionListener#sessionCreated(HttpSessionEvent)
	 */
	public void sessionCreated(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		++total_user;	// 로그인 시 증가
        ...
	}

	/**
	 * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
	 */
	public void sessionDestroyed(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		--total_user;	// 로그아웃 시 감소
        ...
	}
}

 

간단하게 하면 이렇게 각 이벤트 별로 증가와 감소 처리를 할 수 있을거 같습니다.

 

 

여기까지 임미다.

728x90