WEB
리스너(Listener)란
리스너는 웹 애플리케이션의 다양한 이벤트를 감지하고 처리할 수 있는 특수한 형태의 서블릿 클래스임.
서블릿(Servlet)이라는 것은 자바 기반의 서버측 컴포넌트로, 웹 애플리케이션에서 클라이언트의 요청을 처리하고
응답을 생성하는 역할을 함.
리스너는 이러한 서블릿의 하위 클래스이며, 기본 서블릿 기능 외에도 특정 이벤트에 반응하여
추가적인 처리를 수행할 수 있음
웹 어플리케이션을 개발할 때, 특정 이벤트에 반응하거나 애플리케이션 상태를 감시해야 할 때가 있
이러한 기능을 제공하는 것이 '리스너(Listener)'임
POJO와 리스너의 차이
POJO (Plain Old Java Object): POJO는 간단한 자바 객체로, 특정 인터페이스를 구현하지 않거나 상속받지 않으며, 복잡한 제약이나 요구 사항 없이 순수한 자바 클래스를 의미.
리스너: 리스너는 서블릿 API를 상속받아 특정 이벤트를 감지하고 처리하는 특수한 자바 객체임
리스너는 POJO와 달리 웹 애플리케이션의 특정 이벤트에 반응하도록 설계된 클래스
즉, 리스너는 서블릿 API의 특정 인터페이스를 구현하거나, 서블릿 컨텍스트, 세션, 요청과 같은 웹 관련 객체에 대한 접근을 제공함 때문에 리스너는 not POJO임
서블릿과 리스너의 차이
서블릿: 클라이언트의 요청을 처리하고 응답을 생성하는 기능을 담당을 함
일반적으로 HTTP 요청과 응답을 처리하기 위해 사용
리스너: 웹 애플리케이션의 다양한 상태 변화나 이벤트를 감시하고 반응함
예를 들어, 애플리케이션이 시작되거나 종료될 때,
세션이 생성되거나 종료될 때 등의 이벤트를 감지할 수 있고 또 많은 옵션들이 있음
리스너의 설정 방법
웹.xml 설정 -
web.xml 파일에 리스너 클래스를 등록. 이 방식은 설정이 복잡하고 가독성이 떨어짐
<listener>
<listener-class>com.example.MyListener</listener-class>
</listener>
어노테이션 사용 -
자바 어노테이션을 사용하여 리스너를 등록할 수 있음.
이 방식은 설정이 간편하고 가독성이 좋으며, 스프링 프레임워크와의 호환성도 좋음
@WebListener
public class SampleListener implements ServletContextListener {
public SampleListener() { // 생성자
}
public void contextInitialized(ServletContextEvent sce) {
// 웹 구동(실행)시 한번 수행할 코드 부분
System.out.println("로그 : 리스너에서 웹 서버 구동(실행)을 감지함");
// 샘플 데이터 DB에 저장하는 코드
ArrayList<BoardDTO> datas=Crawling.makeSample();
BoardDAO boardDAO=new BoardDAO();
for(BoardDTO data:datas) {
boardDAO.insert(data);
}
}
public void contextDestroyed(ServletContextEvent sce) {
// 웹 서버 종료시 한번 수행될 코드 부분
// ex) DB 연경 해제
}
}
리스너를 활용하여 웹 애플리케이션의 초기 샘플 데이터를 설정하거나,
애플리케이션의 상태를 모니터링할 수 있음
ex) 웹 서버가 구동되면 최초 한 번만 데이터베이스에 샘플 데이터를 저장하는 작업
(샘플 데이터가 없다면 크롤링 데이터 추가하기)
리스너는 웹 애플리케이션의 이벤트를 감시하고 처리할 수 있는 도구임
서블릿과는 다른 역할을 수행하며, 어노테이션을 활용하면 보다 간편하고 효율적으로 리스너를 관리할 수 있
'javaboiii의 Web' 카테고리의 다른 글
Web - 안내창으로 사용자 경험 높이기 (0) | 2024.09.04 |
---|---|
Web - M V C 작업 시 유의사항 (0) | 2024.09.03 |
Web - 8) 제이쿼리를 사용한 태그 제어와 Ajax (0) | 2024.08.30 |
Web - 파일 업로드 예제 (0) | 2024.08.28 |
Web - 비동기 처리) Ajax (0) | 2024.08.22 |