서블릿 클래스의 init 메서드는 서블릿의 초기화 작업이 수행될 때 자동으로 호출되는 메서드이고,

destroy 메서드는 서블릿의 마무리 작업이 수행될 때 자동으로 호출되는 메서드 이다.


init 메서드 작성방법


init 메서드는 파라미터가 없는 메서드로 선언해야 하고, 리턴타입은 void로 지정해야 하며 public 으로 선언해야한다.

javax.servlet.ServletException을 메서드 밖으로 던지도록 만들수도있지만 필요치 않다면 생략이 가능하다.


1
2
3
public void init() throws ServletException{
        
    }
cs



init 메서드중에는 실행 시간이 오래 걸리는 코드도 있다.

그럴경우에는 init 메서드를 작성함으로 인해 전체 시스템 자원은 절약되겠지만 

그 서블릿을 처음으로 호출하는 사용자는 오래 기다려야 한다.

그런 문제를 해결하기 위해서는 web.xml 파일에 서블릿을 등록하기 위해 기술하는 <servlet>엘리먼트 안에

<load-on-startup/> 이라는 서브 엘리먼트를 기술하면 된다. 그렇게하면 웹 컨테이너가 시작될 때 해당 서블릿 클래스가

웹 컨테이너의 메모리로 읽어들여지고 그클래스로부터 서블릿 객체가 만들어지고 초기화되는 일까지 완료된다.



destroy 메서드 작성방법


init 메서드의 작성방법과 비슷하다 파라미터가 없어야하고 리턴타입 void 로 선언되어야하고 public 으로 선언해야한다.

init 메서드와는 달리 throw 절을 쓸수 없다.


1
2
3
public void destroy() {
        
    }
cs




서블릿 클래스의 상위 클래스인 javax.servlet.GenericServlet 클래스에는 init ,destory 메서드와 닮은 init ,destroy 메서드가 있다.

GenericServlet 클래스의 init 메서드중에 ServletConfig 타입의 파라미터를 받는 메서드가 있다. 이 메서드의 역할은

웹 컨테이너가 서블릿을 초기화 할 때 호출하는 것은 ServletConfig 파라미터를 받는 init 메서드 이지만

그 메서드 안에서 내부적으로 파라미터 없는 init 메서드를 호출한다. 

그렇기 때문에 서블릿 클래스에서 init 메서드 작성방법대로 메서드를 작성해놓아도 웹 컨테이너에 의해 호출될수 있다.

하지만 서블릿 클래스에 ServletConfig 파라미터를 받는 init 메서드를 작성해놓아도 웹 컨테이너에 의해 자동으로 호출될수 있다.

그 방법을 사용할때는 그 그 메서드 안에서 슈퍼클래스의 init 메서드를 호출하는 일을 제일 먼저 해야한다.


1
2
3
public void init(ServletConfig config) throws ServletException{
        super.init(config);
    }
cs





 

'JSP&Servlet' 카테고리의 다른 글

ServletContext 객체  (0) 2017.02.26
서블릿의 초기화 파라미터 / init-param  (0) 2017.02.26
서블릿 클래스에서 세션 사용하기  (0) 2017.02.26
include  (0) 2017.02.26
forward  (0) 2017.02.26

+ Recent posts