본문 바로가기
✨ Back-end/Servlet

[Servlet] 서블릿 컨테이너 정의 및 역할, HTTP 요청 처리 순서

by 환풍 2023. 8. 8.
728x90
반응형

서블릿 컨테이너란?

서블릿을 담고 관리해주는거.

구현되 있는 서블릿 클래스의 규칙에 맞게 서블릿을 관리하며

클라이언트의 요청을 받으면 HttpServletRequest와 HttpServletResponse 객체를 생성하여

post, get 여부에 따라 동적인 페이지를 생성해 응답한다.

 

Tomcat (서블릿 컨테이너)

공식적으로 인정된 Servlet / JSP Container 중 가장 인기 있는 Servlet Container 중 하나는 Tomcat이다.

https://tomcat.apache.org/

 

Apache Tomcat® - Welcome!

The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications. These specifications are part of the

tomcat.apache.org

 

역할

  • 서블릿 생명주기 관리
  • 웹 서버와의 통신 지원
  • 멀티쓰레드 지원 및 관리
  • 선언적인 보안 관리

서블릿 생명주기 관리

  - 서블릿 컨테이너는 서블릿의 시작과 끝을 관리한다.

  1. 서블릿 클래스를 로딩하여 인스턴스화
  2. 초기화 메소드를 호출
  3. 요청이 들어오면 적절한 서블릿 메소드 호출
  4. 서블릿 소멸시 Garbage Collection 진행

웹 서버와의 통신 지원

- 서블릿 컨테이너는 서블릿과 웹서버가 손쉽게 통신할 수 있게 해주어 소켓을 만들고

listen, accept 등을 API로 제공해 복잡한 과정을 생략할 수 있게 해준다.

 

멀티쓰레드 지원 및 관리

  1. 서블릿 컨테이너는 요청이 올 때마다 새로운 자바 쓰레드 하나 생성
  2. HTTP 서비스 메소드를 실행하고 나면, 쓰레드는 자동 소멸
  3. 원래 쓰레드를 관리해야 하지만 서버가 다중 쓰레드를 생성 및 운영하니, 쓰레드의 안정성에 대해 걱정 하지 않아도됨.

선언적인 보안 관리

 - 보안관리는 XML 배포 서술자에다 기록하므로, 보안에 대해 수정할 일이 생겨도 자바 소스 코드를 수정해 다시 컴파일 하지 않아도 보안관리가 가능


HTTP 요청 처리 순서

1) 사용자 요청이 들어오면 정적 파일은 웹 서버에서 처리한다. 동적 파일이 필요한 경우 웹서버(WAS)는 

즉, 서블릿 컨테이너로 HTTP 요청(request)을 보낸다.

 

2) 요청을 받은 Servlet ContainerHttpServletRequest, HttpServletResponse 두 객체를 생성한다.

 

3) 요청된 URL을 분석해 어떤 서블릿에 대한 요청을 한 것인지 찾는다.

 

4) 해당 서블릿에서 service 메서드를 호출한 후 POST, GET 여부에 따라 doGet() 또는 doPost()를 호출한다.

 

5) doGet() 혹은 doPost() 메서드는 동적 페이지를 생성한 후 HttpServlet Response 객체 응답을 보낸다.

 

6) 이렇게 요청, 응답 처리를 완료하면 request, response 객체를 소멸시키고 Thread를 종료한다.

 

HttpServletRequest와 HttpServletResponse 객체는 service() 메소드가 실행되기 전에 생성되었다가 끝나면 소멸한다.

따라서 service() 메소드가 실행되는 동안에만 메모리에 상주하고 있어서 그동안에만 사용할 수 있다.

 

 

728x90
반응형

댓글