인프런 커뮤니티 질문&답변

컴퓨터공부하자님의 프로필 이미지
컴퓨터공부하자

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

예제로 구현하는 파일 업로드, 다운로드

Resource 인터페이스에 대한 질문입니다!

해결된 질문

작성

·

264

3

컨트롤러에 맵핑된 링크를 타고 들어오면 반환된 값을 text 페이지로 전송하거나 템플릿을 렌더링한 html이 전송되는게 일반적인 웹 프로그램 동작방식이잖아요?

img 테그 같은 경우 contentDisposition 같은 규약을 사용한 것도 아니고 컨트롤러는 Response라는 인터페이스 타입의 객체를 반환했을 뿐이니 jason 형태로 Response 객체가 웹페이지에 보이는게 정상 아닌가요? 어떻게 페이지 이동없이 <img> 테그 위치에 이미지를 보여줄 수 있는 것인가요?

답변 2

6

안녕하세요. 컴퓨터공부하자님, 공식 서포터즈 Taewon David Hwang입니다.
.

혹시나 이를 스프링에서 어떻게 처리하고 있는지 궁금하실까봐

영한님 답변에 이어 추가적으로 말씀드리자면

Resource를 리턴할 때 ResourceHttpMessageConverter가 해당 리소스의 바이트 정보를 응답 바디에 담아줍니다.

.

감사합니다.

감사합니다!

6

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 컴퓨터공부하자님

Q: Response라는 인터페이스 타입의 객체를 반환했을 뿐이니 jason 형태로 Response 객체가 웹페이지에 보이는게 정상 아닌가요?

-> 스프링 컨트롤러에서 @ResponseBody 일반적인 객체를 반환하면 json 형태로 반환되는 것이 맞습니다. 그런데 @ResponseBody + byte[]또는, Resource를 반환하는 경우 바이트 정보가 반환됩니다.

<img> 에서는 이 바이트 정보를 읽어서 이미지로 반환하게 됩니다.

웹 브라우저에서 f12를 눌러서 네트워크 부분을 확인해보시면 더 자세히 이해가 되실거에요.

감사합니다.

감사합니다!

컴퓨터공부하자님의 프로필 이미지
컴퓨터공부하자

작성한 질문수

질문하기