스프링 부트의 웹 서버는 브라우저나 클라이언트의 HTTP 요청을 받아 컨트롤러에 전달하고, 처리 결과를 다시 응답하기 위해 필요하다. 이를 통해 스프링 부트 애플리케이션은 웹 페이지 제공, API 처리, 정적 자원 제공이 가능해진다.
서블릿은 HTTP 요청과 응답을 자바에서 처리하기 위한 표준 기술이고, 톰캣은 이러한 서블릿을 실행하고 관리하는 서블릿 컨테이너이다. Spring Boot에서는 DispatcherServlet이 모든 요청의 입구 역할을 하며, 요청을 알맞은 Controller로 전달한다.
스프링부트는 내장 톰캣을 통해 복잡한 서버 설치와 배포 과정을 줄여주고, main 메서드 실행만으로 웹 애플리케이션을 바로 실행할 수 있게 해준다.
브라우저에서 주소를 입력했을 때, 내 코드까지 도달하는 흐름을 알아봅시다. 과거에는 메뉴가 100개면 보조 요리사도 100명을 고용해야 해서 주방이 너무 복잡했습니다.
스프링부트는 서블릿 100개를 만들던 과거의 비효율적인 방식을 버렸습니다. 대신 식당 입구에 DispatcherServlet 이라는 단 1명의 수석 지배인만 배치합니다.
수석 지배인은 모든 브라우저의 주문을 식당 입구에서 혼자 다 받은 다음, 이 주문은 어떤 웨이터가 처리하는 게 맞는지 분석하여 알맞은 곳으로 일거리를 던져줍니다. 이를 프론트 컨트롤러 패턴이라고 부릅니다.

컨트롤러는 수석 지배인으로부터 주문을 넘겨받아 실제로 자바 코드를 실행하고 응답을 돌려주는 클래스입니다. 사용자의 요청이 가장 먼저 도달하는 창구이자, 고객을 직접 응대하는 친절한 웨이터 역할입니다. 여러분이 앞으로 가장 많이 만들게 될 클래스입니다.
💡