서블릿의 실행순서를 이해하려면 IoC라는 개념을 알아야 한다.
Java SE 프로그램은 개발자가 main() 메서드 안에 구현한 순서대로 실행된다.
즉 프로그램이 실행되는 순서를 개발자가 제어한다.
그러나 Java EE 기반 프로그램은 흐름을 개발자가 제어하는 것이 아니라 컨테이너가 제어한다.
이처럼 개발자가 아닌 제3자가 프로그램의 실행흐름을 제어하는 것을 IoC(Inversion of Control), 제어의 역전이라고 한다. Servlet도 IoC에 속한다.
따라서 Java EE 기반 프로그램을 개발할 때는 먼저 애플리케이션 컨테이너들이 프로그램을 어떤 순서로 동작시키는지 알고 해당 순서에 맞게 개발하여야 한다.
콜백메서드란 어떤 객체에서 어떤 상황이 발생하면 컨테이너가 자동으로 호출하여 실행하는 메서드를 의미, HttpServlet 클래스를 상속받은 다음 재정의한 init(), service()가 콜백 메서드에 속한다. 이 메서드들은 서블릿 객체에 어떤 상황(메서드)이 발생하면 호출된다.
메서드명 | 메서드가 실행되는 시점 | 실행횟수 | 기능구현 |
init() | 클라이언트로부터 최초로 서블릿 요청이 있을 때 실행 | 1 | 초기화작업 |
service() | 클라이언트로부터 요청이 있을 때마다 실행 | n | 실제 서블릿이 처리해야 하는 작업 |
destory() | 서블릿 객체가 메모리에서 삭제될 때 실행(서비스나 서버 중지 시) | 1 | 자원 해체 작업 |