Link Search Menu Expand Document

스프링 웹 개발 기초

정적 컨텐츠

스프링 부트는 정적 컨텐츠를 자동으로 지원한다.

  1. 웹 브라우저에서 localhost:8080/hello-static.html 요청
  2. 스프링 부트 내장 톰캣 서버에서 스프링 컨테이너에 요청을 전달
  3. 스프링 컨테이너는 hello-static 관련 컨트롤러가 있는지 검색
  4. 컨트롤러가 없을 경우 resources: static/hello-static.html 검색

MVC와 템플릿 엔진

MVC: Model, View, Controller

  1. 웹 브라우저에서 localhost:8080/hello-mvc 요청
  2. 스프링 부트 내장 톰캣 서버에서 스프링 컨테이너에 요청을 전달
  3. @GetMapping에 의하여 HelloControllerhelloMvc() 호출되어 hello-template 문자열 반환.
  4. 반환된 문자열에 의해 ViewResolver가 resources/templates 폴더의 hello-template.html을 찾아서 데이터를 전달
  5. Thymeleaf 템플릿 엔진이 페이지를 렌더링하여 웹 브라우저에서 표현함

 MVC와 템플릿 엔진 01 MVC와 템플릿 엔진 02

helloMvc()를 통하여 Model에 데이터를 담지 않고 HTTP API를 이용하여 값을 전달할 수 있다.

API

  • @ResponseBody를 사용하면 ViewResolver를 사용하지 않고 HTTP의 BODY에 문자 내용을 직접 반환함. 하지만 이 기능은 잘 사용하지 않음. API 01 API 02 html 페이지에 문자 내용이 그대로 입력되었음을 확인할 수 있음

  • @ResponseBody를 사용하여 객체를 반환하면 객체가 JSON으로 반환됨 06 API 04 객체가 JSON으로 반환되었음을 확인할 수 있음

  1. 웹 브라우저에서 localhost:8080/hello-api 요청
  2. 스프링 부트 내장 톰캣 서버에서 스프링 컨테이너에 요청을 전달
  3. @ResponseBody에 의하여 HttpMessageConverter가 동작함.
    • 기본 문자처리 : StringHttpMessageConverter
    • 기본 객체처리 : MappingJackson2HttpMessageConverter

참고: 클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환타입 정보를 조합하여 적당한 HttpMessageConverter가 선택됨