개요
- 정적 컨텐츠 : 서버에서 하는 일 없이 파일을 웹브라우저에 그대로 내려줌.
- MVC와 템플릿 엔진 : 가장 많이 하는 방식
- 템플릿 엔진(과거 jsp, php 방식)
- html을 바로 주는게 아니라 서버에서 프로그래밍 해서 html을 동적으로 바꿔서 내려줌
- API
- 앱 개발할 때 서버에서 json 데이터 구조 포맷으로 클라이언트에게 데이터를 내려줌 (과거에는 xml 포맷 사용했음)
- React 나 Vue.js 사용할 때 사용
- 서버끼리 통신할 때 사용 (html 내릴 필요 없는 상황)
1. 정적 컨텐츠
그냥 파일을 그대로 내려준다
resources/static 폴더 안에 임의의 html 파일 올려 놓으면 됨
작업절차
- resources/static/hello-static.html
- 브라우저에서 http://localhost:8080/hello-static.html 접속
동작방법
- 웹브라우저에서 localhost:8080/hello-static.html 요청
- (내장 톰캣 서버) 요청을 받은 후 스프링 부트에게 넘겨줌
- (스프링 부트) 스프링 컨테이너
3-1. hello-static란 이름의 컨트롤러가 있는지 찾아봄. 컨트롤러가 없으면 3-2로 넘어감
3-2. resources 폴더 안에 hello-static.html 파일이 있는지 찾아봄. 있으면 반환.
2. MVC와 템플릿 엔진
뷰를 템플릿 엔진으로 프로그래밍 된 내용에 따라 렌더링 한 후, 렌더링이 된 HTML을 전달해준다.
- Model : 화면에 필요한 데이터 관리
- View : 화면 그리기에 집중
- Controller : 비즈니스 로직 처리에 집중
3. API
객체를 (JSON 형식으로) 반환한다.
@ResponseBody
응답 HTTP의 Body 부분에 데이터를 (HTML 문서가 아닌) 직접 넣어주겠다는 의미.
- 기본 문자처리 : StringHttpMessageConverter
- 기본 객체처리 : MappingJackson2HttpMessageConverter