[Server] Servlet, Servlet Container, Servlet Context
🌐 Servlet
Jakarta EE에서 설명하는 서블릿(servlet)을 살펴보도록 하자.
A servlet is a Jakarta technology-based web component, managed by a container, that generates dynamic content.
… 생략
정리하자면 이렇다.
- Jakarta 기술 기반의 웹 컴포넌트로, 컨테이너에 의해 관리되며 동적 컨텐츠를 생성한다.
- 자바 기술 기반이므로 자바의 주요 특성을 따라간다. (platform-independent, platform-neutral byte code)
- Jakarta 기술을 지원하는 웹 서버에 의해 동적으로 로드되고 실행될 수 있다.
- 서블릿 컨테이너에 의해 구현된 요청/응답 패러다임을 통해 웹 클라이언트와 상호작용한다.
- 서블릿 컨테이너(서블릿 엔진이라고도 불림)는 서블릿 기능을 제공하는 웹 서버의 확장이다.
⇒ 서블릿 컨테이너는 기본 웹 서버에 서블릿 기능을 추가한 것
- 서블릿 컨테이너(서블릿 엔진이라고도 불림)는 서블릿 기능을 제공하는 웹 서버의 확장이다.
💡 참고하면 좋을 포스팅: Web Server와 WAS
📦 Servlet Container
서블릿 컨테이너는 웹 서버 또는 애플리케이션 서버의 일부로, 요청과 응답이 전송되는 네트워크 서비스를 제공하고, MIME 기반 요청을 디코드하며, MIME 기반 응답을 포맷팅한다. 또한 서블릿 컨테이너는 서블릿의 생명주기 전반에 걸쳐 서블릿을 포함하고 관리한다.
서블릿 컨테이너는 웹 서버에 내장되거나, 별도의 애드온(add-on)으로 설치될 수 있다. 예를 들어, Apache HTTP Server에 Tomcat을 추가해 사용할 수도 있다. 서블릿 컨테이는 또한 웹 애플리케이션 서버(WAS) 안에 포함되어 있기도 하다(Tomcat 안에 서블릿 컨테이너가 내장되어 있다).
🔗 Servlet Context
서블릿 컨텍스트는 서블릿이 자신의 서블릿 컨테이너와 통신하기 위해 사용하는 일련의 메서드를 정의한다.
⇒ 서블릿 컨테이너와 서블릿 사이의 통신을 위한 인터페이스 역할

하나의 웹 애플리케이션 내에 하나의 서블릿 컨텍스트가 존재하며 웹 애플리케이션 내에 있는 모든 서블릿들이 하나의 서블릿 컨텍스트를 참조한다. 따라서 서블릿 간에 정보를 공유할 수 있다.
🛠️ 서블릿 동작방식

- 클라이언트(예: 웹 브라우저)가 웹 서버에 접속해 HTTP 요청을 한다.
- 웹 서버가 요청을 받아 서블릿 컨테이너에 전달한다.
- 서블릿 컨테이너는 서블릿 설정(예: web.xml)을 기반으로 어떤 서블릿을 호출할지 결정하고, 요청과 응답을 나타내는 객체(
HttpServletRequest,HttpServletResponse)와 함께 해당 서블릿을 호출한다. - 서블릿은 요청 객체(
HttpServletRequest)를 사용해 클라이언트가 누구인지, 이 요청의 일부로 어떤 HTTP 메서드 매개변수가 전송되었는지, 그리고 기타 관련 데이터를 파악한다. 서블릿은 프로그래밍된 로직을 수행하고, 클라이언트에게 보낼 데이터를 생성한다. 이 데이터는 응답 객체(HttpServletResponse)를 통해 클라이언트에게 다시 전송된다. - 서블릿이 요청 처리를 마치면, 서블릿 컨테이너는 응답이 적절히 전송되도록 보장하고, 호스트 웹 서버에 제어권을 반환한다.
참고
Leave a comment