스프링 웹 개발 기초
정적 컨텐츠
스프링 부트는 정적 컨텐츠를 자동으로 지원한다.
- 웹 브라우저에서
localhost:8080/hello-static.html
요청 - 스프링 부트 내장 톰캣 서버에서 스프링 컨테이너에 요청을 전달
- 스프링 컨테이너는 hello-static 관련 컨트롤러가 있는지 검색
- 컨트롤러가 없을 경우
resources: static/hello-static.html
검색
MVC와 템플릿 엔진
MVC: Model, View, Controller
- 웹 브라우저에서
localhost:8080/hello-mvc
요청 - 스프링 부트 내장 톰캣 서버에서 스프링 컨테이너에 요청을 전달
@GetMapping
에 의하여HelloController
의helloMvc()
호출되어 hello-template 문자열 반환.- 반환된 문자열에 의해
ViewResolver
가 resources/templates 폴더의 hello-template.html을 찾아서 데이터를 전달 - Thymeleaf 템플릿 엔진이 페이지를 렌더링하여 웹 브라우저에서 표현함
helloMvc()
를 통하여 Model에 데이터를 담지 않고 HTTP API를 이용하여 값을 전달할 수 있다.
API
@ResponseBody
를 사용하면ViewResolver
를 사용하지 않고 HTTP의 BODY에 문자 내용을 직접 반환함. 하지만 이 기능은 잘 사용하지 않음. html 페이지에 문자 내용이 그대로 입력되었음을 확인할 수 있음@ResponseBody
를 사용하여 객체를 반환하면 객체가 JSON으로 반환됨 객체가 JSON으로 반환되었음을 확인할 수 있음
- 웹 브라우저에서
localhost:8080/hello-api
요청 - 스프링 부트 내장 톰캣 서버에서 스프링 컨테이너에 요청을 전달
@ResponseBody
에 의하여HttpMessageConverter
가 동작함.- 기본 문자처리 : StringHttpMessageConverter
- 기본 객체처리 : MappingJackson2HttpMessageConverter
참고: 클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환타입 정보를 조합하여 적당한 HttpMessageConverter가 선택됨