본문 바로가기

java/web

Servlet Container란

Web Server

웹 서버는 클라이언트로부터 HTTP 요청을 받아들이고, 웹 페이지를 HTTP 프로토콜을 통해 반환하는 역할을 합니다.

 

Web Server

Servlet Container

웹 서버는 클라이언트는 정적 웹 페이지만 요청을 할 수 있습니다. 서블릿 컨테이너는 Java를 사용하여 서버 측에서 동적으로 웹 페이지를 생성합니다. 사용자 요청에 의해 웹 페이지를 생성하는 것은 서블릿이 담당합니다. 서블릿 컨테이너는 이 서블릿들을 웹 서버와 상호작용을 할 수 있도록 해주는 기능을 담당하고 있습니다.

 

Servlet Container

Servlet

서블릿은 init, service, destory의 라이프 사이클을 가지고 있습니다.

init()

  • 서블릿이 처음 요청될 때 초기화를 하는 메서드입니다. 초기화된 서블릿은 싱글톤으로 관리됩니다.

service()

  • service()는 초기화 후에 서블릿 컨테이너에 의해 요청에 따라 호출됩니다. 각 요청은 별도의 스레드로 처리되며, 서블릿 컨테이너는 요청의 종류에 따라 서비스 메서드를 호출합니다. 예를 들면, `doGet`, `doPost` 와 같은 메서드를 말합니다.

destory()

  • 더이상 사용되지 않는 서블릿을 서블릿 컨테이너에 의해 호출됩니다.

각 요청은 자체 스레드에 있으며 서블릿 개체는 멀티 스레드를 제공합니다.

웹 서버의 요청에 대한 서블릿 컨테이너 프로세스

1) 클라이언트로부터 HTTP 요청을 수신한 웹 서버는 요청의 내용을 서블릿 컨테이너로 전달합니다.
2) 서블릿 컨테이너는 배포 서술자(Deployment Descriptor)를 참고하여 서블릿을 찾습니다.(web.xml)
3) 컨테이너가 초기화를 위해 init() 메서드를 호출합니다(처음 로드될 때 한번)
4) 컨테이너는 서블릿으 service() 메서드를 호출하여 HTTP 요청을 처리하여 응답합니다.

 

출처 : 서블릿 컨테이너란?, Servlet & Servlet Container