IT 개발노트

Servlet 실행 순서 ( 생명주기 ) 본문

기초튼튼/Servlet

Servlet 실행 순서 ( 생명주기 )

limsungju 2019. 9. 18. 09:43

init() -> service() -> ( doGet() or doPost() ) -> destroy()

최초호출때 Servlet 객체가 안만들어져 있기 때문에 init() -> service() -> ( doGet() or doPost() ) -> destroy()

이후 호출때는 service() -> ( doGet() or doPost() ) -> destroy()

즉, ( doGet() or doPost() )이 실행되도 Servlet이 죽지 않고 메모리에 남아있다. ( 캐시 느낌 )

이런 생명주기 때문에 Servlet을 만들때 HttpServlet을 상속 받아서 doGET(), doPOST()를 오버라이드해서 사용해주어야 한다.

 

init() : Servlet에서 사용하는 전역변수 등등.... 을 초기화 시켜주는 작업을 한다.

service() : http인지 뭔지 용도를 구분하는 용도로 생겼으나 이제는 그냥 다 http

destroy() : 데이터들을 저장한다. ( cleanup )

 

doGET(), doPOST()는 Thread위에서 도는 코드이다.

그래서 Thread를 안전하게 만들어야한다.
( Dao나 이런곳에서 지역변수를 만들어두면 문제가 생길 염려가 있기 때문에 만들지 않는다. )

Thread를 사용하기 때문에 자원에 대한 경쟁(동시접근)이 생기면 제일 먼저 접근한 Thread를 제외하고 Sleep 상태에 빠진다.

Sleep 상태에 빠지면 메모리에 있는 Thread를 디스크로 내리고 새로운 Thread를 할당 ( 이런 문제로 속도저하가 생김 )

'기초튼튼 > Servlet' 카테고리의 다른 글

리다이렉트, 포워딩  (0) 2019.09.11
Servlet 살펴보기-4  (0) 2019.04.17
Servlet 살펴보기-3  (0) 2019.04.16
Servlet 살펴보기-2  (0) 2019.04.09
Servlet 살펴보기-1  (0) 2019.04.08