HTTP 응답 – 정적 리소스, 뷰 템플릿

SHByun·2023년 1월 25일
0

강의 chap6-11


HTTP 응답 – 정적 리소스, 뷰 템플릿

1. 응답 데이터

  • 스프링 서버에서 응답 데이터를 만드는 방법 3가지
  1. 정적 리소스
    -> HTML, css, js를 제공할 때 사용
  2. 뷰 템플릿 사용
    -> 동적인 HTML 제공할 때 사용
  3. HTTP 메시지 사용
    -> HTTP API를 제공할 때 사용, HTTP 바디에 JSON 같은 형식의 데이터를 실어 보낸다.

2. 정적 리소스

  • /static , /public , /resources , /META-INF/resources

3. 뷰 템플릿

  • src/main/resources/templates

  • 뷰 호출 컨트롤러

@RequestMapping("/response-view-v1")
public ModelAndView responseViewV1() {
    ModelAndView mav = new ModelAndView("response/hello")
            .addObject("data", "hello!");
    return mav;
}

// String으로 반환 -> 논리적 주소 이름
@RequestMapping("/response-view-v2")
public String responseViewV2(Model model) {
    model.addAttribute("data", "hello!!");
    return "response/hello";
}

// void로 반환(권장X)
@RequestMapping("/response/hello")
public void responseViewV3(Model model) {
    model.addAttribute("data", "hello!!");
}
  • String으로 반환
    -> @ResponseBody가 없으면 response/hello 로 뷰 리졸버가 실행되어서 뷰를 찾고, 렌더링 한다.
    -> @ResponseBody가 있으면 뷰 리졸버를 실행하지 않고, HTTP 메시지 바디에 직접 response/hello 라는 문자가 입력된다.

  • Void로 반환(권장X)
    -> @Controller 를 사용하고, HttpServletResponse , OutputStream(Writer) 같은 HTTP 메시지 바디를 처리하는 파라미터가 없으면 요청 URL을 참고해서 논리 뷰 이름으로 사용
    -> 명시성이 떨어지고 이런 조건이 맞는 경우가 거의 없기 때문에 권장하지 않는다.


출처

인프런 강의 - 김영한
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

profile
안녕하세요

0개의 댓글