개발/JSP

[JSP/servlet] Servlet의 LifeCycle(생명주기)

윤_ve 2021. 3. 17. 17:49

Servlet의 생명주기

우리(클라이언트)가 인터넷을 통해 무언갈 하려면 서버에 요청을합니다. 

화면을 클릭하면 해당 데이터를 불러와 달라고 서버에 요청을 하게 되는데 

그 server에 요청할때 지나가는 중간에 Servlet이 있습니다.

 

하지만 Servlet은 바로 호출이 되지않습니다.

객체를 생성하고 처리한 뒤, 초기화 작업을 거친 후 요청을 처리하게 됩니다.

 

순서를 정리하면

1. 요청을 할 경우 Servlet 클래스 요청에 의한 객체가 생성됩니다.

2. init() 메소드를 호출해 초기화합니다.

3. service() 메소드를 요청해 클라이언트가 원하는 데이터를 부르는 브라우저의 호출을 요청합니다.

4. service() 메소드는 특정 HTTP요청(Get, Post 등)을 처리하는 메서드를 호출하게 됩니다.

5. 요청이 종료되면 destory()를 통해 생성했던 Servlet객체제거합니다.

출처:victorydntmd.tistory.com/154 (설명이 잘되어있어서 내용 참고하였습니다.)


다음은 servelet의 생명주기를 알아보는 테스트 코드를 만들어 보겠습니다.

 

우선 Dynamic  Web Project를 새로 생성해 줍니다.

 

 

 

프로젝트 이름은 servletlifecycle로 하고 Target Runtime톰캣 7.0으로 설정 해줍니다.

Finish를 누르고

 

 

 

 

 

Java Resources -> src -> 마우스 오른쪽 클릭 -> new -> package를 선택하고

 

 

 

 

 

lifecycle로 패키지이름을 적은 다음 Finish

 

패키지 오른쪽 마우스 클릭 -> new -> servlet을 눌러줍니다.

 

 

Class name에 LifeCycle라고 입력해준뒤 next를 두번 눌러줍니다.

 

이 화면이 뜨는데 

위 처럼 체크박스에 체크해준뒤 Finish를 누릅니다.

 

init - 첫 메소드 요청시에 호출

service - 메소드 요청때 마다 호출

destory - 메소드가 종료될때 호출

 

이렇게 3가지 기능을 사용해보도록 하겠습니다.

 

우선 저렇게 servelet파일을 만들면 여러가지가 적힌 파일이 생성될겁니다.

 

 우선 얘네를 호출될때마다 횟수를 알아보기 위해 정수형태 변수 3가지를 위와 같이 만들어 줍니다.

 

다음 위와 같이 메소드 마다 작성해줍니다. 

이렇게 작성하고 서버를 실행했을 경우 메소드실행 되는 횟수가 콘솔창에 뜹니다.

 

 

 

파일 위에 마우스 오른쪽 클릭 -> Run As -> Run on Server를 눌러줍니다.

 

 

 

위의 창이 뜨면 체크박스에 체크하고 Finish

그러면 톰캣이 실행되는데 콘솔 창을 확인해보면

 

 

첫 요청시 호출되는 init과 언제든 요청되는 service가 호출된 것을 알 수 있습니다.

그리고 server를 stop 하면

 

 

 

아래 처럼 destory가 나오는 것을 알 수 있습니다.