리스너(Listener)

2025. 3. 13. 05:49·개발/servlet
목차
  1. 서블릿 리스너 (Servlet Listener)

서블릿 리스너 (Servlet Listener)

서블릿 리스너는 웹 애플리케이션에서 발생하는 특정 이벤트(Event)를 감지하고, 이벤트 발생 시 미리 정의된 동작을 수행하는 컴포넌트이다. 리스너를 사용하면 웹 애플리케이션의 라이프사이클, 세션 관리, 속성(Attribute) 변경 등 다양한 이벤트에 대한 처리를 구현할 수 있다.

주요 특징

  • 이벤트 기반 프로그래밍: 특정 이벤트 발생 시 자동으로 리스너의 메서드가 호출된다.
  • 선언적 구성: web.xml (Deployment Descriptor) 또는 애노테이션(@WebListener)을 사용하여 리스너를 등록.
  • 다양한 이벤트 유형 지원: 웹 애플리케이션, 컨텍스트, 세션, 요청 등과 관련된 다양한 이벤트를 처리할 수 있다.

리스너의 종류 및 역할

Java EE는 다양한 종류의 리스너 인터페이스를 제공하며, 각 인터페이스는 특정 이벤트 유형에 대응된다. 주요 리스너 종류는 다음과 같다.

  1. ServletContextListener:
    • 웹 애플리케이션(컨텍스트)의 시작과 종료 이벤트를 처리.
    • contextInitialized(ServletContextEvent sce): 웹 애플리케이션 초기화 시 호출. (웹 애플리케이션 시작 시 한 번)
    • contextDestroyed(ServletContextEvent sce): 웹 애플리케이션 종료 시 호출. (웹 애플리케이션 종료 시 한 번)
    • 용도: 웹 애플리케이션 초기화 작업 (데이터베이스 연결, 설정 로드 등), 자원 해제 등.
  2. ServletContextAttributeListener:
    • 웹 애플리케이션(컨텍스트)의 속성(Attribute) 추가, 제거, 변경 이벤트를 처리.
    • attributeAdded(ServletContextAttributeEvent event): 속성 추가 시 호출
    • attributeRemoved(ServletContextAttributeEvent event): 속성 제거 시 호출
    • attributeReplaced(ServletContextAttributeEvent event): 속성 변경 시 호출
    • 용도: 컨텍스트 속성 변경 로깅, 특정 속성 값에 따른 처리 등
  3. HttpSessionListener:
    • 세션 생성 및 소멸 이벤트를 처리.
    • sessionCreated(HttpSessionEvent se): 세션 생성 시 호출
    • sessionDestroyed(HttpSessionEvent se): 세션 소멸 시 호출 (타임아웃, invalidate() 호출)
    • 용도: 세션 카운팅, 사용자 로그인/로그아웃 처리, 세션 자원 관리 등
  4. HttpSessionAttributeListener:
    • 세션의 속성 추가, 제거, 변경 이벤트를 처리.
    • attributeAdded(HttpSessionBindingEvent event): 세션 속성 추가
    • attributeRemoved(HttpSessionBindingEvent event): 세션 속성 제거
    • attributeReplaced(HttpSessionBindingEvent event): 세션 속성 변경
    • 용도: 세션에 attribute가 추가, 삭제, 수정될때 이벤트를 처리.
  5. ServletRequestListener:
    • 클라이언트의 요청(Request) 생성 및 소멸 이벤트를 처리.
    • requestInitialized(ServletRequestEvent sre): 요청 초기화 시 호출 (요청이 들어올 때마다)
    • requestDestroyed(ServletRequestEvent sre): 요청 소멸 시 호출 (응답이 완료될 때마다)
    • 용도: 요청 처리 시간 측정, 요청 정보 로깅 등
  6. ServletRequestAttributeListener:
    • 요청(Request)의 속성 추가, 제거, 변경 이벤트를 처리.
    • attributeAdded(ServletRequestAttributeEvent srae): 속성 추가 시 호출
    • attributeRemoved(ServletRequestAttributeEvent srae): 속성 제거 시 호출
    • attributeReplaced(ServletRequestAttributeEvent srae): 속성 변경 시 호출
    • 용도: 요청 속성 변경 로깅, 특정 속성 값에 따른 처리 등

리스너 설정 방법

web.xml (Deployment Descriptor):

XML
 
<listener>
    <listener-class>com.example.MyServletContextListener</listener-class>
</listener>

 

 

애노테이션 (@WebListener): (Servlet 3.0 이상)

Java
 
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class MyServletContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        // 웹 애플리케이션 초기화 시 처리
        System.out.println("Web Application Initialized!");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        // 웹 애플리케이션 종료 시 처리
        System.out.println("Web Application Destroyed!");
    }
}

 

 

저작자표시 비영리 변경금지 (새창열림)

'개발 > servlet' 카테고리의 다른 글

리소스에 접근하는 방법  (0) 2025.03.14
필터(Filter)  (0) 2025.03.13
PRG(Post-Redirect-Get) 패턴  (0) 2025.03.05
MVC 패턴  (0) 2025.03.05
HttpSession 과 Cookie 인터페이스 정리  (0) 2025.03.05
  1. 서블릿 리스너 (Servlet Listener)
'개발/servlet' 카테고리의 다른 글
  • 리소스에 접근하는 방법
  • 필터(Filter)
  • PRG(Post-Redirect-Get) 패턴
  • MVC 패턴
함수형 인간
함수형 인간
잘 까먹는 개발자의 두뇌 확장 장치
  • 함수형 인간
    개발 기록 노트
    함수형 인간
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 글 목록 (84)
      • 기타 (1)
      • 개발 (82)
        • Java (6)
        • Javascript (1)
        • Spring (20)
        • jQuery (0)
        • Git (0)
        • servlet (11)
        • JSP (6)
        • HTML (0)
        • CSS (10)
        • SQL (9)
        • JSTL (3)
        • Mybatis (4)
        • Design Patterns (0)
        • HTTP (2)
        • Devtools (0)
        • IntelliJ (5)
        • JDBC (1)
        • Lombok (3)
        • Logging (1)
      • 책 리뷰 (0)
  • hELLO· Designed By정상우.v4.10.3
함수형 인간
리스너(Listener)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.