말 그대로 정적인 HTML 컨텐츠를 제공하는 것이다.Spring boot는 tomcat에 의해 적절한 컨트롤러가 로드된다.
클라이언트의 요청과 맞는 스프링 컨테이너가 없다면 정적 컨텐츠가 로드된다.

기존에 작성된 HTML을 따로 가공하지 않고, 순수 제공하는 것으로 Web Server에서 제공하는 경우 사용할 수 있다.
Spring 정적 컨텐츠는 resources하위 폴더를 칭한다. 단순 static 폴더만을 지칭하지 않는다. 물론 변경도 가능하다.
spring.mvc.static-path-pattern=/resources/**
나중에 Web Serverd와 WAS를 정리해둬야겠다.
MODEL VIEW CONTROLLER의 약자로, 컨텐츠 제공을 위한 3가지 컴포넌트를 활용한다.
Model: 컨텐츠의 정보를 나타내며, 데이터의 가공을 책임지는 컴포넌트이다.
View: 컨텐츠의 사용자 인터페이스 부분을 담당한다. 데이터를 기반으로 사용자들이 볼 수 있는 화면을 구성한다.
Controller: 데이터와 사용자 인터페이스를 연결한다. 즉, 모델과 뷰를 연결한다.
스프링에서는 아래의 사진과 같이 tomcat에 의해 스프링 컨테이너가 적절한 controller를 로드한다.
controller는 모델을 viewResolver에게 전달한다. 템플릿 엔진(Thymeleaf)가 동적으로 view를 처리하고 사용자에게 보여진다.
즉, 서버 사이드 랜더링 방식으로 동작한다.

클라이언트에게 데이터만을 보낸다. XML, JSON과 같은 데이터 형식을 보냄으로서 클라이언트에게 랜더링을 맡긴다. 즉, 클라이언트 사이드 랜더링 방식으로 동작하게끔 한다.
스프링은 객체를 ResponseBody에 반환한다. 이때, 당연하게도 객체를 바로 보낼 순 없다.
스프링 컨테이너는 HttpMessageConverter를 선택해 객체를 컨버팅 할 수 있도록한다.
기본 문자 처리는 StringHttpMessageConverter, 기본 객체 처리는 MappingJackson2HttpMessageConverter를 사용한다.

김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 참고해 작성했습니다.