본문 바로가기

카테고리 없음

Jsp listener

▶ 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가 저장한 속성 출력 가능