[Springboot] View 매핑, @ReponseBody

Woong·2022년 9월 11일
0

Java

목록 보기
15/21

@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data", "hello!!");
        return "hello";
    }
}
  • Controller 에서 문자열을 리턴하면, viewResolver 가 화면을 찾아 리턴
    • SpringBoot 템플릿엔진 기본 viewName 매핑
    • resources:templates/ + {ViewName} + .html
  • spring-boot-devtools 라이브러리 추가시 서버 재시작없이 html 파일 컴파일만으로 view 파일 변경 가능

정적 컨텐츠

  • 별다른 Controller 및 동적 데이터 없이 html 그대로 보여주는 경우
    • resources 에 있는 html 그대로 표시

@ResponseBody

  • @ResponseBody annotation 추가하여 응답 body 직접 반환
    • 객체를 리턴시 기본적으로 JSON 형태로 응답
    • viewResolver 대신 HttpMessageConverter 가 동작하여, 문자열일 경우 StringHttpMessageConverter, 객체일 경우 MappingJackson2HttpMessageConverter 를 통해 응답 body 를 생성하여 응답
    /** JSON 형태로 응답
     * @param name
     * @return
     */
    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloAPI(@RequestParam("name") String name) {
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }

    static class Hello {
        @Getter
        @Setter
        private String name;
    }

reference

0개의 댓글