[Spring] HTTP 응답 데이터 전달 방법

hi·2022년 9월 12일
0

서버 -> 클라이언트 응답 데이터를 만들고 전달하는 세가지 방법

① 정적 리소스
② 뷰 템플릿 (동적)
③ 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, 명시성이 떨어짐

③ HTTP 메시지 바디

HTML, 뷰 템플릿을 사용해도 메시지 바디에 HTML 데이터가 담겨 전송된다
③은 정적 리소스, 뷰를 거치지 않고 직접 HTTP 응답 메시지를 전달하는 경우이다

1) HTTPServletResponse

response.getWriter().write()

2) HTTPEntity

3) ResponseEntity

  • HTTPEntity를 상속
  • HTTP 응답 코드 설정 가능

4) @ResponseBody

  • 뷰를 사용하지 않고 HTTP 메시지 컨버터를 통해 HTTP 메시지 직접 입력 가능

5) ResponseBody + @ResponseStatus


  • @RestController
    = @Controller + @ResponseBody

0개의 댓글