관리 메뉴

거니의 velog

(8) 서블릿 동작 과정 본문

Java_Servlet

(8) 서블릿 동작 과정

Unlimited00 2023. 8. 22. 18:47

* 클라이언트 1이 요청하면 톰캣은 FirstServlet이 메모리에 로드되어 있는지 확인한다. 최초의 요청이므로 init() 메서드를 호출하여 FirstServlet 인스턴스를 메모리에 로드한다. 그런 다음 doGet()이나 doPost() 메서드를 호출하여 서비스를 한다.

* 클라이언트 2가 다시 동일한 서블릿을 요청하면 톰캣은 다시 FirstServlet이 메모리에 로드되어 있는지 확인한다. 이번에는 메모리에 있는 것이 확인되므로 바로 doGet()이나 doPost() 메서드를 호출하여 서비스를 한다.

* 다음은 브라우저의 다른 탭에서 동일한 요청을 했을 때의 결과이다.

스레드 방식으로 동작하므로 최초 요청 시에만 init() 메서드를 호출한다.

* 톰캣을 실행한 후 브라우저로 요청하여 출력 결과를 확인해 보자. 맨 처음 브라우저에서 /first로 요청하면 최초의 요청이므로 FirstServlet 클래스의 init()을 호출해 초기화한 후 메모리에 로드되어 doGet() 메서드를 호출하여 서비스를 한다.

* 그러나 다른 브라우저에서 동일한 서블릿 매핑 이름인 /first로 요청하면 미리 메모리에 로드된 FirstServlet 클래스 서블릿이 재사용되므로 init()은 호출하지 않고 doGet() 메서드만 호출되어 서비스를 한다.

* 이처럼 동일한 작업의 경우 서블릿은 메모리에 존재하는 서블릿을 재사용함으로써 훨씬 빠르고 효율적으로 동작한다.