물론이지! 너가 정리한 Listener 내용을 아래처럼 시험대비용, 인터뷰용, 학습용 모두에 적합하게
🔹 요약 정리, 🔹 표로 보기, 🔹 코드 예시, 🔹 이유 및 목적까지 한 눈에 보기 좋게 구성해줄게.
Listener는 웹 애플리케이션에서 발생하는 이벤트(생성, 소멸, 속성변경 등) 를 감지하고,
이에 따라 자동으로 실행되는 이벤트 기반 컴포넌트다.
| 종류 | 주요 역할 | 예시 |
|---|---|---|
ServletContextListener | 애플리케이션 시작/종료 감지 | 서버 시작 시 초기 설정 로딩 |
HttpSessionListener | 세션 생성/종료 감지 | 로그인 세션 개수 추적 |
ServletRequestListener | 요청 시작/종료 감지 | 요청 시작 시 로깅 |
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("애플리케이션 종료됨");
}
}
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("세션 소멸됨");
}
}
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("요청 종료됨");
}
}
| 방법 | 설명 |
|---|---|
| XML 등록 | web.xml에 <listener-class>로 등록 |
| 애노테이션 등록 | 클래스에 @WebListener 선언 (Servlet 3.0 이상) |
예시 (web.xml)
<listener>
<listener-class>com.example.MyAppListener</listener-class>
</listener>
| 목적 | 설명 |
|---|---|
| 초기화 자동화 | 애플리케이션 시작 시 DB 연결, 설정값 로딩 |
| 세션 상태 관리 | 로그인 사용자 수 카운트, 세션 만료 감지 |
| 공통 이벤트 감지 | 요청/응답별 시간 측정, 로깅 |
| 자원 정리 | 세션 종료 시 사용자 캐시 제거 등 |
| 인터페이스 | 감지 이벤트 | 주요 용도 |
|---|---|---|
ServletContextListener | 애플리케이션 시작/종료 | 전체 시스템 설정, 리소스 로딩 |
HttpSessionListener | 세션 생성/소멸 | 로그인 수 체크, 세션별 데이터 관리 |
ServletRequestListener | 요청 시작/종료 | 요청 시간 측정, 요청 추적 |
Listener란 무엇이며, 주요 인터페이스와 그 역할을 서술하시오.
답안 예시:
Listener는 웹 애플리케이션에서 특정 이벤트(요청, 세션, 애플리케이션)의 생성, 소멸, 변경을 감지하고 자동으로 실행되는 컴포넌트이다.
ServletContextListener는 애플리케이션의 시작/종료를 감지하며, HttpSessionListener는 세션 생성/소멸을, ServletRequestListener는 클라이언트 요청 시작/종료를 감지한다. 이를 통해 초기화, 리소스 정리, 로깅 등의 작업을 수행할 수 있다.
필요하면 이 Listener 구조를 시각적으로 보여주는 생명주기 다이어그램이나
Spring Web에서의 확장 방식 (@EventListener) 같은 것도 설명해줄 수 있어!
다음으로 더 궁금한 거 있을까? 😊