서버 -> 클라이언트 응답 데이터를 만들고 전달하는 세가지 방법
① 정적 리소스
② 뷰 템플릿 (동적)
③ HTTP 메시지 바디
스프링 부트는 다음 디렉토리 속 정적 리소스 제공
/static
/public
/resources
/META-INF/resources
정적 리소스 경로
src/main/resources/static
뷰 템플릿 경로
src/main/resources/templates
String을 반환하는 경우
@ResponseBody 가 있으면 뷰 리졸버 실행 x , 메시지 바디 사용
void를 반환하는 경우
@Controller를 사용하고 HttpServletResponse , OutputStream(Writer) 파라미터가 없으면 URL을 참고하여 논리 뷰 이름으로 사용
but, 명시성이 떨어짐
HTML, 뷰 템플릿을 사용해도 메시지 바디에 HTML 데이터가 담겨 전송된다
③은 정적 리소스, 뷰를 거치지 않고 직접 HTTP 응답 메시지를 전달하는 경우이다
1) HTTPServletResponse
response.getWriter().write()
2) HTTPEntity
3) ResponseEntity
4) @ResponseBody
5) ResponseBody + @ResponseStatus