본문 바로가기
교육, 학습/멀티캠퍼스_풀 스택

Servlet - 생명주기 메서드(init, doGet, destroy), 실행흐름

by 개발하는 경제학도 2022. 3. 9.

강의 소개

현재 수강하고 있는 멀티캠퍼스 k-digital 지능형 웹서비스 풀 스택 과정을 수강하며 적은 내용입니다.

교재로는 자바 웹을 다루는 기술을 사용하고 있습니다.


서블릿의 생명주기 메서드

서블릿 실행 단계마다 호출되어 기능을 수행하는 메서드이다.

생명주기 단계 호출되는 메서드 특징
초기화 init() 서블릿 요청시 최초 1번만 호출된다.
서블릿 생성시 초기화 작업을 주로 수행한다.
작업 수행 doGet()
doPost()
서블릿 요청시 매번 호출된다.
실제로 클라이언트가 요청하는 작업을 수행한다.
종료 destroy() 서블릿이 요청된 기능을 수행한 뒤 메모리에서 소멸될 때 호출된다.
서블릿의 마무리 작업을 주로 수행한다.

여기서 destroy메서드는 서블릿이 소멸될 때 종료 작업을 담당하며, 만약 기능이 필요 없는 경우에는 생략해도 된다.

하지만 작업 수행을 담당하는 doGet 또는 doPost 메서드는 반드시 구현해야 하는 점에 유의한다.

 

서블릿 실행 흐름

클라이언트 서버
1. 서블릿 요청(/url)
6. 브라우저 출력
2. 서블릿 컴파일 클래스를 찾아서 객체를 생성한다. 
3. init 메서드 호출

----------------(서블릿 요청시마다 반복)----------------
4. doGet, doPost메서드가 호출된다. - 요청, 응답
5. 응답을 브라우저에 전송
------------------------------------------------------

7. 서버 종료 / 서블릿 수정될 때 호출된다.
서블릿 삭제(= 메모리 정리)
destroy메서드 호출

 

init메서드

서블릿이 클라이언트에서 요청되면 톰캣은 이 서블릿이 메모리에 로드되어있는지 확인한다. 최초 호출이면 init메서드를 호출하여 이 서블릿의 인스턴스를 메모리에 로드한다. 이로써 init메서드는 최초 실행일 때 1번만 실행된다.

그런 다음 doGet, doPost메서드를 호출하여 요청에 대한 서비스를 한다.

 

doGet, doPost메서드

doGet, doPost메서드가 호출되면 브라우저에 출력된다.

앞서 언급했던 것과 같이 톰캣은 클라이언트들이 이 서블릿을 요청할 때마다 인스턴스가 메모리에 로드되어 있는지를 확인한다. 만약 최초 호출이면 init메서드부터 호출된 후 doGet, doPost메서드가 호출된다.

최초 호출이 아니라면 메모리에 로드되어 있으므로 바로 doGet, doPost메서드가 호출된다.

 

이렇게 doGet, doPost메서드는 클라이언트가 요청할 때마다 호출된다. 다시 말하자면, 만약 다른 클라이언트에서 서블릿 요청이 들어오면 위의 표에서 1, 6, 4, 5번을 반복한다.

 

 

destroy메서드

서블릿 코드가 수정되면 자동으로 재 컴파일된다. 서버 서블릿 reload(이전 서블릿 삭제)될 때 destroy메서드가 호출된다. 즉, 서블릿이 메모리에서 없어져야 할 때 호출된다.

댓글