IT 개발노트
Servlet 실행 순서 ( 생명주기 ) 본문
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 |