HandlerAdapter의 응답 형태
114
작성한 질문수 1
HTTP응답을 사용하는 경우, 핸들러어댑터는 DispatcherServlet에게 ModelAndView가 아닌 null을 반환하나요?
뷰 템플릿을 사용하는 경우, 핸들러어댑터는 항상 ModelAndView 형식을 반환하나요?
컨트롤러에서 반환값이 ModelAndView라면, returnValueHandler에서 그대로 ModlAndView 형태로 반환
컨트롤러 반환값이 viewName이라면, returnValueHandler에서 ModelAndView로 변환해서 반환
Spring MVC의 다양한 핸들러 어댑터는항상 ModelAndView 형식또는 null만 반환하나요?
제가 이해한 것이 맞을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 장은혜님,
HandlerAdapter의 동작 방식과 관련해서 질문 주셨네요. 이를 이해하기 위해서는 Spring MVC의 흐름을 잘 파악하는 것이 중요합니다.
HTTP 응답을 사용하는 경우:
- 컨트롤러 메소드가
@ResponseBody어노테이션이나@RestController로 선언된 경우, 응답본문에 직접 데이터를 작성합니다. 이 경우에는 ReturnValueHandler가 데이터 변환을 담당하며 View에 대한 처리가 생략되기 때문에, HandlerAdapter는 DispatcherServlet에게 ModelAndView 대신 처리한 결과나null을 반환하게 됩니다. 이때 메시지 컨버터가 작동하여 응답 본문을 생성합니다.
- 컨트롤러 메소드가
뷰 템플릿을 사용하는 경우:
- 뷰 템플릿을 사용하는 경우에는 컨트롤러가 반환한 값을 통해 ReturnValueHandler에서 ModelAndView 객체가 생성됩니다.
- 만약 컨트롤러가 그냥
String타입의 viewName을 반환하면 ReturnValueHandler가 이를 ModelAndView로 변환하여 반환합니다.
- 뷰 템플릿을 사용하는 경우에는 컨트롤러가 반환한 값을 통해 ReturnValueHandler에서 ModelAndView 객체가 생성됩니다.
Spring MVC의 다양한 HandlerAdapter:
- 일반적으로 Spring MVC에서 사용되는 HandlerAdapter는 결국 View와의 연결을 위해 ModelAndView를 반환하거나,
@ResponseBody등의 처리를 통해 직접 응답하는 경우에는null을 반환합니다. 하지만 이러한 구조는 프레임워크 내부에서 많은 유연성과 확장성을 갖고 있어 경우에 따라 다른 형태의 반환도 가능할 수 있으니, 기본적인 형태로 ModelAndView와 null로 이해하면 대부분 합리적입니다.
- 일반적으로 Spring MVC에서 사용되는 HandlerAdapter는 결국 View와의 연결을 위해 ModelAndView를 반환하거나,
아래의 게시물에서는 여러분이 질문하신 내용과 유사한 주제를 다루고 있습니다:
- View와 ReturnValueHandler
- HTTP 메시지 컨버터 사용 시 핸들러 어댑터의 반환 값
- html 대신 객체를 반환할 때 Dispatcher Servlet에서는 어떻게 처리가 되는걸까요??
이 게시물에서 더 구체적인 사례와 설명을 확인하시길 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
servlet과 container에 대한 질문입니다
0
22
1
api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?
0
62
1
jsp 의존성 수정 요청
0
76
2
요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?
0
142
1
save() 메서드 문의
0
65
1
절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상
0
99
1
request-body-json
0
83
2
MVC 패턴의 적용 단위
0
94
1
RequestMapping을 이용한 핸들러, 어댑터
0
118
2
save 후 결과화면
0
86
2
jsp를 이용한 view
0
97
1
application.properties에 debug 추가해도 결과가 똑같습니다.
0
177
1
수업 코드 제공 관련 문의
0
97
2
RequestMappingHandlerAdapter의 Controller 호출 과정
0
99
3
파일 오픈 시
0
68
1
스프링 배치 관련
0
77
1
@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부
0
112
1
postman으로 /request-body-json-v1 호출시 500 error
0
94
1
프론트엔드와 백엔드의 mvc, rest api에 대한 질문
0
78
1
모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문
0
111
1
console log 출력 관련 질문입니다.
0
74
1
애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ
0
138
1
html 변경하는 부분 적용 문제
0
103
1
한글 깨짐
0
76
2





