서블릿 컨테이너(톰캣)는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다. 서블릿 객체는 싱글톤으로 관리한다.
- 서블릿 컨테이너(톰캣)는 처음 서블릿을 실행할 때 서블릿 객체를 생성한다.
- 서블릿을 최초 요청할 때 서블릿을 메모리에 로딩하고 서블릿 객체를 생성한다. 이후 요청이 오면 앞서 생성한 서블릿 객체를 그대로 사용한다.
- 서버는 init() 메소드를 호출해서 Servlet을 초기화 한다.
- init() 메소드는 서블릿 생명 주기 중 한 번만 호출된다.
- service() 메소드를 호출해서 Servlet이 브라우저의 요청을 처리하도록 한다.
- service() 메소드는 GET, POST 등 HTTP 요청을 처리하는 메소드 doGet(), doPost() 등을 호출한다.
- service() 메서드는 서블릿 수명 주기 동안 여러 번 호출할 수 있다.
- 스레드를 통해 동시에 실행된다.
- 서블릿 컨테이너가 종료되면, 서버는 destroy() 메소드를 호출하여 Servlet을 제거한다.
- distroy() 메소드는 서블릿 생명 주기 중 한 번만 호출된다.