스프링 웹 MVC의 컨트롤러
Controller
- view name을 반환하거나
- 반환값을 HTTP Response Body에 쓴다.
- 1번은 @ResponseBody를 handler method에 사용하지 않을 때
- view name 반환
- 스프링 웹 MVC에서는 DispatcherServlet가 ContentNegotiationViewResolver에게 view name 전달
- ContentNegotiationViewResolver는 등록된 view resolver들에게 보내, 요청의 응답을 만들 수 있는 모든 view를 찾아낸다
- URL의 파라미터와 Accept 헤더를 보고 적절한 view를 결정한다.
- 처리결과를 담은 view를 반환한다.
- ContentNegotiationViewResolver는 다른 view resolver와 다르게, 직접 view 객체를 찾지 않는다.
- 다른 view resolver에게 적합한 view를 찾으라고 위임한다.
- 이 때는 메세지 컨버터가 사용되지 않는다.
- 2번은 @ResponseBody를 handler method에 사용할 때
- 반환 ( 객체 / String / int / ... )
- 적절한 HttpMessageConvert를 탐색
- 변환하여 HTTP 응답 본문에 쓴다.
헤더
- Content-type 헤더는 클라이언트가 어떤 타입의 요청을 보내는지?
- Accept 헤더는 클라이언트가 어떤 타입의 응답을 원하는지?
- 결국 Accept 헤더는 클라이언트가 어떤 타입의 view를 원하는지와 연관
Format 파라미터 (URL확장자)
- Accept 헤더를 사용하지 않을 때
/path?format=pdf / xml / json / html / ...
'학습 > Spring' 카테고리의 다른 글
[spring] 스프링에서 WebJars 이용하기 (0) | 2020.04.23 |
---|---|
[spring] 스프링 웹 MVC의 정적 리소스 지원 (0) | 2020.04.23 |
[spring] 스프링 웹 MVC의 HttpMessageConverter (0) | 2020.04.20 |
[spring] 스프링부트를 통한 스프링 웹 MVC 구축의 편리함 (0) | 2020.04.19 |
[spring] 스프링부트의 Spring-Boot-Devtools (0) | 2020.04.18 |
댓글