▶ Slide 1: Listener란?
정의: 웹 애플리케이션에서 **특정 이벤트(시작, 종료, 세션 등)**가 발생할 때 자동으로 동작하는 감시자 역할의 컴포넌트
비유: CCTV처럼 이벤트를 감지하고 자동 반응함
예시:
- 애플리케이션 시작 시 초기화 작업 수행
- 세션 생성 시 로그인 처리
- 요청 시작/종료 시 로깅 등
▶ Slide 2: 주요 Listener 종류
리스너 인터페이스감지하는 이벤트
ServletContextListener | 웹 애플리케이션 시작/종료 |
HttpSessionListener | 세션 생성/소멸 |
ServletRequestListener | 요청 생성/소멸 |
HttpSessionAttributeListener | 세션 속성 변경 |
ServletContextAttributeListener | context 속성 변경 |
▶ Slide 3: HttpSessionListener 예제
@WebListener
public class LoginSessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent se) {
System.out.println("세션 생성됨: " + se.getSession().getId());
}
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("세션 소멸됨: " + se.getSession().getId());
}
}
▶ Slide 4: ServletContextListener 예제
@WebListener
public class AppInitListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
System.out.println("애플리케이션 시작됨");
// 예: DB 초기화, 공용 속성 등록
}
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("애플리케이션 종료됨");
}
}
▶ Slide 5: JSP에서 Listener 활용 예시
목적: Listener에서 저장한 값을 JSP에서 출력
예: 로그인 시 세션에 저장한 값 출력
// LoginServlet.java
HttpSession session = request.getSession();
session.setAttribute("userId", "kim123");
<%@ page session="true" %>
<h3>환영합니다, <%= session.getAttribute("userId") %>님!</h3>
예: context에 등록된 공용 속성 출력
// AppInitListener.java
sce.getServletContext().setAttribute("company", "Grepp");
<%= application.getAttribute("company") %> 에 오신 것을 환영합니다.
▶ Slide 6: 전체 흐름 예시
[서버 시작] → contextInitialized() 실행됨
[사용자 접속] → sessionCreated() 실행됨
[JSP에서 세션값 출력] → ${sessionScope.userId}
[세션 만료] → sessionDestroyed() 실행됨
[서버 종료] → contextDestroyed() 실행됨
▶ Slide 7: Listener 요약 정리
항목 | 내용 |
정의 | 웹 애플리케이션의 생명주기 이벤트를 감시하고 자동 실행되는 컴포넌트 |
사용 방식 | @WebListener 어노테이션 또는 web.xml에 등록 |
주요 종류 | Context, Session, Request, Attribute 관련 리스너들 |
JSP 연동 | 세션, application 객체에서 Listener가 저장한 속성 출력 가능 |