강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

홍기현님의 프로필 이미지
홍기현

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

HttpServletRequest - 개요

서블릿과 서블릿컨테이너 그리고 WAS

작성

·

58

0

[질문 내용]
HttpServletRequest 역할

HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다.

pdf보면 위 내용처럼 HTTP 요청 메시지를 파싱하고 그 결과를 Request 객체를 만드는게 서블릿이라고 적혀있는데

WAS와 서블릿을 구분해서 공부를 하던 도중 개념이 헷갈려서 https://jakarta.ee/specifications/servlet/5.0/apidocs/jakarta/servlet/http/httpservletrequest

공식문서를 찾아봤는데

The servlet container creates an HttpServletRequest object and passes it as an argument to the servlet's service methods (doGet, doPost, etc).

요청 객체와 파싱은 서블릿 컨테이너가 한다고 나와있습니다.

 

찾아보니까 서블릿과 서블릿 컨테이너는 같은 의미는 아닌거 같고 그럼 여기서 말하는 서블릿 컨테이너는 WAS 같은건가요?

아니면 서블릿 = 서블릿 컨테이너 라고 개념을 익혀도 괜찮은건가요?

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 홍기현님.

서블릿과 서블릿 컨테이너, 그리고 WAS의 개념에 대해 혼란을 겪고 계신 것 같습니다. 이것들은 웹 애플리케이션에서 중요한 역할을 하지만, 그 차이와 각자의 역할이 명확히 이해되지 않으면 헷갈리기 쉽습니다.

우선, 기본 개념을 간단히 설명드리겠습니다:

  1. 서블릿(Servlet): 자바 기반의 웹 어플리케이션을 쉽게 만들 수 있게 해주는 기술입니다. 서블릿은 웹 요청을 받아들이고 그에 대한 응답을 생성하는 데 필요한 비즈니스 로직을 처리합니다.

  2. 서블릿 컨테이너(Servlet Container): 서블릿의 실행 환경을 제공합니다. 주요 역할은 HTTP 요청을 받아 HttpServletRequest 객체로 변환하고, 서블릿의 라이프 사이클을 관리하며, 응답을 클라이언트로 전송하는 것입니다. Tomcat 같은 서블릿 컨테이너가 여기에 해당됩니다.

  3. WAS(Web Application Server): 웹 서버와 애플리케이션 서버의 결합으로 볼 수 있습니다. 이는 HTTP 요청을 처리하는 웹 서버 역할과, 동적 페이지 생성을 위한 서블릿 컨테이너를 제공하는 등 복합적인 역할을 수행합니다.

이러한 설명을 바탕으로, 질문에서 언급하신 “서블릿 컨테이너”는 일반적으로 WAS의 구성 요소로 이해하시면 됩니다. 즉, 서블릿 컨테이너는 서블릿의 관리와 실행을 담당하는 부분이며, WAS는 더 많은 기능을 포함한 더 큰 개념입니다. 서블릿은 서블릿 자체만을 의미하며, 서블릿 컨테이너는 서블릿의 실행 환경을 제공합니다.

아래의 유사한 질문과 답변에서 좀 더 많은 정보를 얻으실 수 있습니다:
- 서블릿과 서블릿 컨테이너의 역할에 대한 질문입니다.
- 서블릿 컨테이너, was가 헷갈립니다.
- WAS와 서블릿 컨테이너의 역할

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

홍기현님의 프로필 이미지
홍기현
질문자

HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다.

그럼 위의 서블릿이라는 말보다는 서블릿 컨테이너를 넣어주는게 더 정확한 표현이겠네요?

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 홍기현님

생각하신 내용이 맞습니다 🙂

참고로 서블릿, 서블릿 컨테이너라를 단어를 엄격하게 구분해서 잘 사용하지는 않기 때문에 문맥에 맞추어 이해하는 것이 필요합니다 🙂

감사합니다.

홍기현님의 프로필 이미지
홍기현

작성한 질문수

질문하기