'servletlistener'에 해당되는 글 1건

웹 어플리케이션 구성 요소


서블릿(Servlet)

 - 클라이언트 요청을 처리하는 역할을 합니다.


필터(Filter)

 - 요청 처리 전/후에 작업을 수행하는 역할을 합니다.


리스너(Listener) 

 - 특정 상태에 놓일 때 작업을 수행하는 역할을 합니다.




  먼저 Listener 리스너 예제를 보겠습니다.  



ServletContextListener?


  웹 애플리케이션이 시작되거나 종료되는 상태에 대한 작업을 수행합니다.



import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class Listener01 implements ServletContextListener {

  @Override
  public void contextInitialized(ServletContextEvent sce) {
    // ServletContext 객체가 생성되었을 때 호출된다.
    // 즉 웹 애플리케이션이 시작되었을 때 호출된다.
    System.out.println("====> Listener01.contextInitialized()");
  }

  @Override
  public void contextDestroyed(ServletContextEvent sce) {
    // ServletContext 객체가 소멸되기 직전에 호출된다.
    // 즉 웹 애플리케이션이 종료되기 직전에 호출된다.
    System.out.println("====> Listener01.contextDestroyed()");
  }

}



ServletRequestListener?


클라이언트로부터 요청이 들어오거나 서버에서 응답을 수행할 때 발생하는 

이벤트에 대한 작업을 수행합니다.



import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class Listener02 implements ServletRequestListener {
  
  @Override
  public void requestInitialized(ServletRequestEvent sce) {
    // ServletRequest 객체가 생성되었을 때 호출된다.
    // 즉 클라이언트로부터 요청이 들어 올 때 호출된다.
    System.out.println("====> Listener02.requestInitialized()");
  }

  @Override
  public void requestDestroyed(ServletRequestEvent sce) {
    // ServletRequest 객체가 소멸되기 직전에 호출된다.
    // 즉 클라이언트에게 응답했을 때 호출된다.
    System.out.println("====> Listener02.requestDestroyed()");
  }

}



ServletRequestAttributeListener?


ServletRequest 객체에 값을 저장, 제거 혹은 변경할 때 호출된다.


import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class Listener03 implements ServletRequestAttributeListener {
  
  @Override
  public void attributeAdded(ServletRequestAttributeEvent sce) {
    // ServletRequest 객체에 값을 저장할 때 호출된다.
    // 즉 req.setAttribute(...) 호출할 때
    System.out.printf("====> Listener03.attributeAdded(): %s=%s\n", 
        sce.getName(), sce.getValue());
  }

  @Override
  public void attributeRemoved(ServletRequestAttributeEvent sce) {
    // ServletRequest 객체에서 값을 제거할 때 호출된다.
    System.out.println("====> Listener03.attributeRemoved()");
  }
  
  @Override
  public void attributeReplaced(ServletRequestAttributeEvent sce) {
    // ServletRequest 객체에 저장된 값을 변경할 때 호출된다.
    System.out.println("====> Listener03.attributeReplaced()");
  }

}



서버에 add한 프로젝트 폴더의 경로를 찾아가 웹브라우저에서 url 주소를 치면

클라이언트의 요청을 인식하고 각 Listener에서 객체를 생성합니다.

이를 통해 어느 시점에서 Listener가 생성 - 소멸되는지 확인할 수 있습니다.





블로그 이미지

필로그래머

,