작성
·
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의 개념에 대해 혼란을 겪고 계신 것 같습니다. 이것들은 웹 애플리케이션에서 중요한 역할을 하지만, 그 차이와 각자의 역할이 명확히 이해되지 않으면 헷갈리기 쉽습니다.
우선, 기본 개념을 간단히 설명드리겠습니다:
서블릿(Servlet): 자바 기반의 웹 어플리케이션을 쉽게 만들 수 있게 해주는 기술입니다. 서블릿은 웹 요청을 받아들이고 그에 대한 응답을 생성하는 데 필요한 비즈니스 로직을 처리합니다.
서블릿 컨테이너(Servlet Container): 서블릿의 실행 환경을 제공합니다. 주요 역할은 HTTP 요청을 받아 HttpServletRequest 객체로 변환하고, 서블릿의 라이프 사이클을 관리하며, 응답을 클라이언트로 전송하는 것입니다. Tomcat 같은 서블릿 컨테이너가 여기에 해당됩니다.
WAS(Web Application Server): 웹 서버와 애플리케이션 서버의 결합으로 볼 수 있습니다. 이는 HTTP 요청을 처리하는 웹 서버 역할과, 동적 페이지 생성을 위한 서블릿 컨테이너를 제공하는 등 복합적인 역할을 수행합니다.
이러한 설명을 바탕으로, 질문에서 언급하신 “서블릿 컨테이너”는 일반적으로 WAS의 구성 요소로 이해하시면 됩니다. 즉, 서블릿 컨테이너는 서블릿의 관리와 실행을 담당하는 부분이며, WAS는 더 많은 기능을 포함한 더 큰 개념입니다. 서블릿은 서블릿 자체만을 의미하며, 서블릿 컨테이너는 서블릿의 실행 환경을 제공합니다.
아래의 유사한 질문과 답변에서 좀 더 많은 정보를 얻으실 수 있습니다:
- 서블릿과 서블릿 컨테이너의 역할에 대한 질문입니다.
- 서블릿 컨테이너, was가 헷갈립니다.
- WAS와 서블릿 컨테이너의 역할
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요. 홍기현님
생각하신 내용이 맞습니다 🙂
참고로 서블릿, 서블릿 컨테이너라를 단어를 엄격하게 구분해서 잘 사용하지는 않기 때문에 문맥에 맞추어 이해하는 것이 필요합니다 🙂
감사합니다.
HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를
HttpServletRequest
객체에 담아서 제공한다.그럼 위의 서블릿이라는 말보다는 서블릿 컨테이너를 넣어주는게 더 정확한 표현이겠네요?