JSP에서 보통 리스너(Listener)는 Controller 파트에서 많이 한다
하지만 수업중에는 Model 파트에서 접목시켜 공부한다고 한다.
( 리스너 == 모니터링, 감시 )
우선 Listener에 대해 알아보자.
1. 특수한 형태의 서블릿 클래스
extends 서블릿
서블릿의 하위(자식) 클래스 이다.
2. 서블릿 == not POJO
기능이 있어서 무거운 JAVA 클래스이다.
3. 특수한 기능을 수행할수있는 not POJO 클래스 입니다.
Listener의 사용은 web에서 초기에 시작할때 샘플데이터를 웹 크롤링을 활용하여 세팅할 때 사용한다.
첫 번째 빨간색 박스: Servlet Context Events
Lifecycle (jakarta.servlet.ServletContextListener):
ServletContextListener 인터페이스는 Web 애플리케이션이 실행 종료에 실행된다.
Changes to attributes (jakarta.servlet.ServletContextAttributeListener):
이 리스너는 ServletContext의 속성(attribute)이 추가되거나 제거되거나 변경될 때 호출된다.
두 번째 빨간색 박스: HTTP Session Events
Lifecycle (jakarta.servlet.http.HttpSessionListener):
HttpSessionListener 인터페이스는 세션이 시작되거나 종료될 때 데이터를 기록하거나 특정 작업을 수행한다.
Changes to attributes (jakarta.servlet.http.HttpSessionAttributeListener):
이 리스너는 세션에 속성이 추가되거나 제거되거나 변경될 때 호출된다.
Session migration (jakarta.servlet.http.HttpSessionActivationListener):
HttpSessionActivationListener는 세션이 활성화되거나 비활성화될 때 호출된다.
클러스터링된 환경에서 세션이 다른 서버로 이동할 때 사용할 수 있다.
Object binding (jakarta.servlet.http.HttpSessionBindingListener):
이 리스너는 객체가 세션에 바인딩되거나 언바인딩될 때 호출된다.
이는 특정 객체가 세션에 추가되거나 제거될 때 객체 자신에게 이벤트를 전달한다.
세 번째 빨간색 박스: Servlet Request Events
Lifecycle (jakarta.servlet.ServletRequestListener):
요청이 서버로 도달하거나 응답이 클라이언트로 반환될 때 이벤트를 처리할 수 있다.
요청 수를 카운팅하거나, 요청 시작과 끝에서 로그 수집을 수행하는 작업.
Changes to attributes (jakarta.servlet.ServletRequestAttributeListener):
ServletRequestAttributeListener 리스너는 요청 객체에 속성이 추가되거나 변경되거나 제거될 때 호출된다.
요청 범위의 데이터가 변경될 때 로그 수집을하거나 트리거 작업을 수행.
아래는 Lifecycle Listener를 생성했을 때 초기 세팅이다.
@WebListener
public class SampleListener implements ServletContextListener {
public SampleListener() {
}
public void contextInitialized(ServletContextEvent sce) {
//웹 서버 구동(실행) 시 한번 수행될 코드 부분
//샘플 데이터 DB에 저장하는 코드
}
public void contextDestroyed(ServletContextEvent sce) {
//웹 서버 종료시 한번 수행될 코드 부분
//DB 연결 해제
}
}
기본적으로 listener을 선언하면 아래처럼 web.xml에 설정을 해주어야 하지만.
<listener>
<listener-class>controller.common.SampleListener</listener-class>
</listener>
최신 servlet에서는 간편하게 @WebListener을 사용하여 설정할 수 있다.
뒤 방법 모두 같으니 기억하고 있자.
'국비 내용 정리 > HTML' 카테고리의 다른 글
국비 45일차 내용 정리(성공 실패 여부 정보 띄우기) (1) | 2024.09.04 |
---|---|
국비 44일차 내용 정리 (0) | 2024.09.03 |
국비 39일차 내용 정리 (0) | 2024.08.28 |
국비 36일차 내용 정리(비동기 처리) (0) | 2024.08.22 |
국비 35일차 내용 정리(핸들러 맵핑) (0) | 2024.08.20 |