서블릿 클래스의 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 |