-
서블릿 Life Cycle 알아보기JAVA/Java 2020. 6. 2. 21:45
Servlet 이란?
- 자바로 웹 애플리케이션을 개발할 수 있는 스펙과 API를 제공한다.
- 가장 핵심적인 클래스는 HttpServlet이다.
- 이전 CGI방식에 비해 한 요청을 처리할 때마다 프로세스를 만드는 게 아닌 스레드를 만들어서 처리하고 공유한다.
- Servlet 컨테이너는 Servlet 스펙에 기반하여 Servlet의 라이프 사이클을 다루게 된다.
Servlet Code
Servlet에 Lice Cycle을 확인하기 위한 코드를 작성해보자.
1. Init() 메서드는 최초 요청을 서블릿 컨테이너가 받고 그 요청을 처리할 서블릿을 찾았다면
서블릿을 인스턴스로 만들고 나서 최초로 한번 호출한다
2. 해당 요청을 처리하기 위해서 http 메서드에 따라서 doget doPost 등의 메서드들이 호출이 된다.
3. 또 다른 요청 한 번 더 들어오면 이미 서블릿이 메모리에 올라가 있기 때문에 init() 은 호출하지 않고 다시 http 메서드를 호출해서 요청을 처리한다.
4. 서블릿 컨테이너 종료 시 서블릿을 메모리에 올려놓을 필요가 없으므로 destroy 한다.
처음으로 http://localhost:8080/hello 요청하게 되면?
- 초기화 작업 후 doGet 요청 처리
- 처음으로 /hello 요청 시 서블릿 인스턴스를 만들게 된다.
- 서블릿이 생성된 후 Get 요청을 처리하는 doGet 메서드가 실행된다.
- 콘솔 로그에는 2개의 로그가 찍히게 된다.
- 이후 http://localhost:8080/hello URL로의 접근에 대해서는 Init 메소드가 호출되지 않는다.
- doGet 메서드만 호출된다.
- 마지막으로 Tomcat 서버를 중지하면 destroy 메서드가 호출된다.
'JAVA > Java' 카테고리의 다른 글
JAVA 연산자 (0) 2020.11.29 Maven에 대해서 알아보자 (0) 2020.08.30 왜 Wrapper 클래스는 쓰이는 걸까? (1) 2020.05.21 객체의 해시코드(hashCode())란 (0) 2020.05.19 JAVA의 Comparable, Comparator를 알아보자 (0) 2020.04.13