HTTP 메세지 컨버터는 어디에서 사용되는것일까, 보면 핸들러 어댑터에서 컨트롤러에 필요한 파라미터를 어디선가 던져주어야 하는것으로 보이는데 이 모든 비밀은 애노테이션 기반의 컨트롤러, @RequestMapping을 처리하는 핸들러 어댑터인 RequestMappingHandlerAdapter에 있다. Argument Resolver 애노테이션 기반의 컨트롤러는 매우 다양한 파라미터를 사용할 수 있었다. HttpServletRequest, Model, @RequestParam, @ModelAttribute와 같은 애노테이션 @RequestBody와 HttpEntity 같은 HTTP 메세지를 처리하는 부분까지 매우 큰 유연함을 보이는데 이 이유는 ArgumentResolver 덕분이다. 동작 방식은 다음과 ..
@RequestBody를 컨트롤러 메서드단에 적용하면 HTTP 메세지 바디에 그대로 String 문자열이나, ResponseEntity의 인자로 객체를 반환하면 JSON으로 문자열을 반환하면 OK와 같은 문자열을 그대로 입력할 수 있다. 응답으로 객체/문자열을 처리하는 방법은 이전 시간에 논의한 내용을 참고하자 https://progyun.tistory.com/209 [스프링 웹 MVC 1편] 25. HTTP 응답 - HTTP API, 메세지 바디에 직접 입력 package hello.springmvc.basic.response; import hello.springmvc.basic.HelloData; import java.io.IOException; import javax.servlet.http.Http..
지금까지는 @ResponseBody를 이용하여 String을 HTTP 바디에 직접 넣어주거나 HttpEntity("OK") 식으로 넘겨주거나, response.getWriter / OutputStream을 이용하였다. 그렇다면 이제 정적 리소스와 뷰 템플릿을 이용하는 방법에 대해 알아보자 먼저 용어 정의를 명확히 할 필요가 있다. 정적 리소스 - 웹 브라우저에 정적인(렌더링 로직 X)인 HTML, CSS, JS 파일을 제공할 때는 정적 리소스를 사용 뷰 템플릿 사용 - 웹 브라우저에 특정 로직을 적용한 동적 HTML을 제공할때는 뷰 템플릿을 사용한다. HTTP 메세지 사용 - HTTP API를 사용하는 경우에는 HTML이 아니라 데이터를 전달해야 하기 때문에, HTTP 메세지 바디에 JSON 형식으로 데..