인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

윤다정님의 프로필 이미지
윤다정

작성한 질문수

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

서블릿

서블릿 컨테이너, was가 헷갈립니다.

해결된 질문

작성

·

7.8K

9

안녕하세요 강의 잘 듣고 있습니다.

그런데 WAS,서블릿 컨테이너, 서블릿 객체가 헷갈려서 질문드립니다.

강의 중, 서블릿 컨테이너는 톰캣처럼 서블릿을 지원하는 WAS라고 하셨습니다. 

더불어, 다른 학생의 질문에 대한 영한님의 답변 중

"request 객체를 만들어서 서블릿에 넘겨주는 것은 서블릿 컨테이너의 역할입니다. response도 마찬가지로 서블릿 컨테이너가 합니다. 그리고 서블릿 컨테이너가 서블릿을 호출해주는 것이지요."

라고 하셨습니다.

그런데 그림에서는 request,response 객체를 생성하고 서블릿 객체를 호출하는 "웹 애플리케이션 서버(WAS)"와 서블릿 객체를 생성하고 관리하는 "서블릿 컨테이너"로 나뉘어져 있네요. 

그림에서 "WAS"와 "서블릿 컨테이너"가 사실 같은 큰 서블릿 컨테이너인데 역할에 따라 구분해놓으신건가요??

답변 1

1

안녕하세요. 윤다정님, 공식 서포터즈 y2gcoder입니다.

WAS는 간단히 말씀드리면 Web Server + Web Container(Sevlet Container)로 되어있습니다. 
그래서 정적 컨텐츠를 제공하면서도(Web Server), 웹 컨테이너를 이용해 내부 로직을 거쳐 동적 페이지(Web Container)를 보여줄 수 있게 됩니다.
자바는 웹 구현 기술로 Servlet를 사용합니다. 이 Servlet 관리하고 jsp파일을 실행할 수 있게 해주는 것이 Servlet Container입니다. 

WAS가 Servlet Container를 포함하는 개념으로 이해해주시면 좋을 것 같습니다!


감사합니다.

윤다정님의 프로필 이미지
윤다정
질문자

혹시 제가 이해한 프로세스가 맞는지 확인해주실 수 있을까요?

1. WAS의 Servlet Container가 servlet 객체를 생성

2. 클라이언트가 해당 servlet을 사용하는 http 요청을 하면, Servlet Container에서 request,response 객체 생성

3. 이때, 쓰레드가 Servlet 객체 호출하고 request,response 객체를 Servlet 객체에 넘겨줌. 

4. request 객체를 활용해 Servlet의 비즈니스 로직 실행. 

5. 응답 결과를 response 객체에 담은 후, Servlet Container에 전달

6. Servlet Container가 http 응답 메시지 생성 후 클라이언트에게 전달 

 

감사합니다.

안녕하세요. 윤다정님, 공식 서포터즈 y2gcoder입니다.

윤다정님께서 말씀해주신 게 맞습니다. 좀 더 보충 설명을 하자면 


1. 서블릿은 로딩 시점에 생성될 수도 있고, 최초 요청 시점에서 생성될 수도 있다고 합니다. 그래서 요청시 서블릿 인스턴스가 메모리에 존재하지 않는다면  서블릿 컨테이너는 해당 서블릿을 로드하고 init() 메서드를 통해 초기화한 후, 적재한다고 합니다.
 

Servlet에 대해 영한님께서도 말씀해놓으신 곳이 있어 같이 링크 공유하겠습니다!


감사합니다.

윤다정님의 프로필 이미지
윤다정

작성한 질문수

질문하기