Develope Me!

[Servlet] 서블릿 실행 순서와 생명주기(Lifecycle) 본문

Web/Servlet & JSP

[Servlet] 서블릿 실행 순서와 생명주기(Lifecycle)

코잘알지망생 2021. 7. 28. 23:57

서블릿 실행 순서

1. 클라이언트로부터 처리 요청을 받음

클라이언트가 웹 브라우저를 통해 요청 -> 웹서버는 요청 정보 헤더의 URI 분석 -> 서블릿 컨테이너에 처리 넘김 -> 실행 준비 

 

2. 최초의 요청 여부 판단

서블릿 컨테이너는 현재 실행 서블릿이 최초 요청인지를 판단 (서블릿 객체가 메모리에 있는가? 없는가?)

 

3. 서블릿 객체 생성

최초 요청 --> 서블릿을 메모리에 로딩하고 객체 생성

*서블릿은 최초 요청이 들어 왔을 때 한 번만 객체 생성하고 이 객체를 계속 사용

 

4. init() 메소드 실행

서블릿 객체 생성 뒤 호출되는 메소드

Servlet 인터페이스에 선언됨

기능은 GenericServlet 클래스에 구현되어 있음

생성자 호출 직후에 단 1번 호출되며 객체 초기화, 리소스획득GenericServlet 클래스 내용을 바꾸고 싶다면 이 메소드를 재정의 하면 됨

 

5. service() 메소드 실행

실행하는 서블릿의 요청 순서와 관계없이 클라이언트 요청에 따라 실행

실제 서블릿에서 처리해야 하는 내용 구현

Servlet 인터페이스에 선언됨

GenericServlet 클래스에 abstract 메소드로 선언됨

HttpServlet 클래스에 메소드 몸체가 구현되어 있음

HttpServlet 클래스 내용을 바꾸고 싶다면 이 메소드를 재정의 하면 됨

 

6. 서버 프로그램 실행 완료

7. 서블릿 컨테이너가 실행 결과를 웹서버에 전달

8. 웹 서버는 클라이언트에 응답

 

 

서블릿 객체의 생명주기

 

서블릿의 콜백 메소드

init() 클라이언트로부터
최초로 요청이 있을 때 실행
1번 실행 초기화 작업
service() 요청이 있을 때마다 실행 n번 실행 실제 서블릿이 처리해야하는 작업
destroy() 서블릿 객체가 메모리에서 
삭제 될 때 실행 
(서비스/서버 중지 시)
1번 실행 자원 해제 작업

 

서블릿 객체 생성

 

서블릿 객체가 메모리에 생성되는 시점: 클라이언트로부터 서블릿 실행 요청이 들어온 시점(서버입장)

서블릿 컨테이너는 서블릿 객체를 heap 메모리에 생성하고 init() -> service() 순으로 실행함

최초 요청 때 생성한 서블릿 객체 계속 사용함

한 번 사용한 객체를 재사용함으로서 처리속도, 메모리 부분에서 효율적인 장점을 지님

 

 

서블릿 객체 삭제

 

서블릿 객체가 삭제되는 시점: 웹서버에서 웹 애플리케이션 서비스가 중지

이때 destroy() 메소드가 호출되어 실행

 

 

Comments