Choi의 고유결계

JSP Servlet: 웹어플리케이션 감시: ServletContextListener 본문

Jsp,Servlet

JSP Servlet: 웹어플리케이션 감시: ServletContextListener

믿을수없는맛 2018. 9. 29. 18:27
반응형

웹 어플리케이션 감시: ServletContextListener

웹 어플리케이션의 생명주기를 감시하는 것이 바로 ServletContextListener인데 줄여서 감시 리스너라고 합니다. 이 리스너는 해당 메소드가 웹어플리케이션의 시작과 종료시에 호출됩니다(contextInitialized(),contextDestroyed())

저도 햇갈렸던 것이 웹어플리케이션은 서블릿이 아니고 서블릿은 컴포넌트입니다. 그리고 이 컴포넌트를 묶어놓은 프로그램이 웹어플리케이션이 되는것입니다.

기본적으로ServletContextListener는 인터페이스기 때문에 우리가 직접 구현하여 사용해야합니다.

1. 리스터 클래스 제작

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

@WebListener
public class ContextListenerEx implements ServletContextListener{

    public ContextListenerEx() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
        System.out.println("contextDestroyed");
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
        System.out.println("contextInitialized");
    }

}
public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
        System.out.println("contextDestroyed");
    }

public void contextDestroyed는 웹어플이 종료되고 나서 실행하는 메소드로 오버라이딩을 통해 실행할 내용을 메소드 안에서 기술한다.


    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
        System.out.println("contextInitialized");
    }

public void contextInitialized는 웹 어플이 시작하려 할때 가장 먼저 실행되는 메소드로 마찬가지로 인터페이를 통해 구현 하여 메소드안에 실행할 내용을 기술한다.

이런식으로 단순히 문자열만 출력하는 리스너 메소드를 만들었습니다.

2. 리스너 적용

리스너 클래스를 제작한후에 서블릿에서 사용하려면 적용을 해야하는데요
총 2가지 방법이 있습니다. web.xml에서 기술하거나 어노테이션을 이용하는것인데요 이중 어노테이션을 이용하는것이 가장 간편합니다.

1. web.xml

<listener>
    <listener-class>클래스의주소</listener-clss>
</listener>

2. 어노테이션

@WebListener
public class ContextListenerEx implements ServletContextListener{

@WebListener를 리스너가 구현되어있는 클래스 위에 써줍니다.

이상 Choi 였습니다.

반응형
Comments