@RequestMapping("/response-view-v2")
public String responseViewV2(Model model) {
model.addAttribute("data", "hello!!");
return "response/hello";
}
@ResponseBody
가 없으면 response/hello
로 뷰 리졸버가 실행되어서 뷰를 찾고, 렌더링 합니다.@ResponseBody
가 있으면 뷰 리졸버를 실행하지 않고, HTTP 메시지 바디에 직접 response/hello
라는 문자가 입력됩니다.response/hello
를 반환하면 다음 경로의 뷰 템플릿이 렌더링 되는 것을 확인할 수 있습니다.emplates/response/hello.html
@Controller
를 사용하고, HttpServletResponse
, OutputStream(Writer)
같은 HTTP 메시지 바디를 처리하는 파라미터가 없으면 요청 URL을 참고해서 논리 뷰 이름으로 사용합니다.-요청 URL: /response/hello
-실행: templates/response/hello.html
-참고로 이 방식은 명시성이 너무 떨어지고 이렇게 딱 맞는 경우도 많이 없어서, 권장하지 않는다고 합니다.
@ResponseBody
, HttpEntity
를 사용하면, 뷰 템플릿을 사용하는 것이 아니라, HTTP 메시지 바디에 직접 응답 데이터를 출력할 수 있습니다.