ABOUT ME

beck33333@naver.com

Today
Yesterday
Total
  • 서블릿 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' 카테고리의 다른 글

Designed by Tistory.