해결된 질문
작성
·
586
0
그림에서는 웹 애플리케이션 서버에 대해서만 존재하는데 원래는 앞에 웹 서버도 존재하는 건가요? 웹 브라우저 <-> 웹 서버 <-> WAS(+서블릿 컨테이너) 이런 느낌인건가요?
서블릿 컨테이너는 서블릿 객체를 싱글톤으로 관리하므로 여러 사용자가 하나의 서블릿 객체를 공유하면서 사용 합니다 하지만 request 와 response는 사용자 요청이 들어오면 각각의 사용자에게 하나씩 할당이 되는건가요?
영한님께서 강의 중에 '동적으로 제공하는 html 페이지는 어떻게 제공할 것인가?' 라는 얘기를 하셨는데 보통 프론트와 백엔드가 api를 주고 받으면서 프론트가 백엔드로부터 데이터를 받아서 html 페이지를 동적으로 관리하는거 아닌가요? 백엔드도 동적인 html페이지를 생성해서 프론트에게 페이지 전체를 던져야 하나요?
감사합니다.
답변 1
0
안녕하세요. annjae4676님
네, 맞습니다. 일반적으로 웹 애플리케이션 아키텍처에서 웹 브라우저, 웹 서버, 웹 애플리케이션 서버(WAS, +서블릿 컨테이너) 사이의 통신이 이루어집니다. 웹 브라우저는 클라이언트로서 사용자의 요청을 처리하고, 웹 서버는 정적 자원을 제공하며, 웹 애플리케이션 서버는 동적 자원을 처리하는 역할을 합니다.
그런데 WAS가 웹 서버의 역할도 함께 할 수 있기 때문에 브라우저 -> WAS 구조로 설계하는 것도 가능합니다.
서블릿 컨테이너는 서블릿 객체를 싱글톤으로 관리하며, 여러 사용자가 하나의 서블릿 객체를 공유합니다. 그러나 요청(request)과 응답(response) 객체는 각각의 사용자에게 하나씩 할당되어 사용됩니다. 이렇게 함으로써, 각 사용자의 요청을 독립적으로 처리할 수 있습니다.
"동적으로 제공하는 HTML 페이지"라는 말은 서버가 데이터를 기반으로 HTML 페이지를 생성하여 전송하는 것을 의미합니다. 프론트엔드와 백엔드가 API를 주고받으면서 프론트엔드가 데이터를 받아 HTML 페이지를 동적으로 관리하는 것도 맞습니다. 이러한 방식을 SPA(Single Page Application)이라고 합니다.
그러나 전통적인 웹 애플리케이션에서는 백엔드가 동적인 HTML 페이지를 생성하여 프론트엔드에 전달하는 방식이 일반적입니다. 이 경우 서버는 HTML 템플릿과 데이터를 합성하여 최종적인 HTML 페이지를 만들고, 이를 클라이언트에게 전달합니다. 자바에서는 과거에는 JSP를 많이 사용했지만, 지금은 JSP는 시장에서 사장되고 있고, 대안으로 타임리프나 다른 기술을 사용하는 것을 권장합니다.
두 가지 방식 모두 각각 장단점이 있으며, 웹 애플리케이션의 요구사항에 따라 적절한 방식을 선택할 수 있습니다. SPA는 빠른 페이지 전환과 사용자 경험을 제공하지만, 서버 사이드 렌더링이 필요한 경우에는 전통적인 방식이 더 적합할 수 있습니다.
답변 감사합니다 영한님!