Listener란

moon.kick·2025년 4월 17일

물론이지! 너가 정리한 Listener 내용을 아래처럼 시험대비용, 인터뷰용, 학습용 모두에 적합하게
🔹 요약 정리, 🔹 표로 보기, 🔹 코드 예시, 🔹 이유 및 목적까지 한 눈에 보기 좋게 구성해줄게.


✅ Listener란?

Listener는 웹 애플리케이션에서 발생하는 이벤트(생성, 소멸, 속성변경 등) 를 감지하고,
이에 따라 자동으로 실행되는 이벤트 기반 컴포넌트다.


✅ Listener의 주요 역할

종류주요 역할예시
ServletContextListener애플리케이션 시작/종료 감지서버 시작 시 초기 설정 로딩
HttpSessionListener세션 생성/종료 감지로그인 세션 개수 추적
ServletRequestListener요청 시작/종료 감지요청 시작 시 로깅

✅ Listener의 인터페이스별 구조

1. ServletContextListener

@WebListener
public class MyAppListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("애플리케이션 시작됨");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("애플리케이션 종료됨");
    }
}

2. HttpSessionListener

@WebListener
public class MySessionListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("세션 생성됨");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("세션 소멸됨");
    }
}

3. ServletRequestListener

@WebListener
public class MyRequestListener implements ServletRequestListener {
    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("요청 시작됨");
    }

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        System.out.println("요청 종료됨");
    }
}

✅ Listener 등록 방법

방법설명
XML 등록web.xml<listener-class>로 등록
애노테이션 등록클래스에 @WebListener 선언 (Servlet 3.0 이상)

예시 (web.xml)

<listener>
  <listener-class>com.example.MyAppListener</listener-class>
</listener>

✅ Listener를 사용하는 이유

목적설명
초기화 자동화애플리케이션 시작 시 DB 연결, 설정값 로딩
세션 상태 관리로그인 사용자 수 카운트, 세션 만료 감지
공통 이벤트 감지요청/응답별 시간 측정, 로깅
자원 정리세션 종료 시 사용자 캐시 제거 등

✅ 요약 정리표

인터페이스감지 이벤트주요 용도
ServletContextListener애플리케이션 시작/종료전체 시스템 설정, 리소스 로딩
HttpSessionListener세션 생성/소멸로그인 수 체크, 세션별 데이터 관리
ServletRequestListener요청 시작/종료요청 시간 측정, 요청 추적

✅ 시험 대비 서술형 답안 예시

Listener란 무엇이며, 주요 인터페이스와 그 역할을 서술하시오.

답안 예시:
Listener는 웹 애플리케이션에서 특정 이벤트(요청, 세션, 애플리케이션)의 생성, 소멸, 변경을 감지하고 자동으로 실행되는 컴포넌트이다.
ServletContextListener는 애플리케이션의 시작/종료를 감지하며, HttpSessionListener는 세션 생성/소멸을, ServletRequestListener는 클라이언트 요청 시작/종료를 감지한다. 이를 통해 초기화, 리소스 정리, 로깅 등의 작업을 수행할 수 있다.


필요하면 이 Listener 구조를 시각적으로 보여주는 생명주기 다이어그램이나
Spring Web에서의 확장 방식 (@EventListener) 같은 것도 설명해줄 수 있어!

다음으로 더 궁금한 거 있을까? 😊

profile
@mgkick

0개의 댓글