티스토리 뷰

0. Controller의 반환 값

:: Spring에 위임되어 Controller에서 처리한 모든 응답은 Front Controller에게 반환 타입을 고려해 반환
:: Front Controller(DispatcherServlet) 은 앞선 Controller 가 반환한 타입에 따라 View 생성


1. 반환 값 분류 기준

    :: HandlerAdapter의 응답으로 String 또는 ModelAndView 또는 Object 중 하나를 받음
    :: @ResponseBody의 여부에 따라 X :: ViewResolver 혹은 O :: MessageConverter 실행

 

1.1 웹 페이지를 반환(HTML)

controller의 반환 타입 String ModelAndView
  정적 페이지(ViewTemplate) 동적 페이지(ViewTemplate + Model)
ViewResolver의 탐색 값 ViewTemplate 명칭의 HTML, JSP, Thymeleaf
ViewResolver의 반환 값 미존재 시 404 + Model => 렌더링

1.2 데이터를 반환(JSON)

=> @Controller + @ReponseBoby = @RestController

 // @Controller + @ReponseBoby = @RestController
 
 @RestController
public class IndexController {
    @RequestMapping(method = RequestMethod.GET, value = "/")
    public String index() {
        return "index.html";
    }
}
controller의 반환 타입 Object
@ResponseBody 적용 -> Controller 메서드가 반환 객체를 JSON으로 변환
-> @Controller 메서드에서의 반환 값을 ViewTemplate가 아닌 "값 그 자체"로 인식 
HttpMessageConverter -> 객체에 따라 JSON 또는 XML로 데이터 변환 

1.2.1 JSON 반환을 위한 HttpMessageConverter 구현체

:: HttpMessageConverter는 XmlHttpRequest(XHR)의 응답

더보기

- XmlHttpRequest(XHR)

:: 웹 브라우저가 웹 서버와 비동기적으로 통신하기 위해 제공하는 API

:: 웹 페이지 전체를 새로고침하지 않고도 서버로부터 데이터를 주고받거나, 특정 부분만 업데이트 가능

:: HTTP 메서드 지원 -> 서버와의 통신 지원 

 

=>  위의 웹 서버와의 통신을 위한 API인 XHR을 통해 JSON<->Object 변환

출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1

  • 응답
    :: 직렬화(Serialization)
    :: Java 객체 → JSON 변환(Java 객체 → HTTP Response Body)

  • 요청
    :: 역직렬화(Deserialization)
    :: JSON → Java 객체 변환 (HTTP Request Body → Java 객체)

 


참조

ASAC 수업자료

인프런 - 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의 | 김영한 - 인프런

김영한 | , 원리를 알아야 핵심이 보인다!김영한의 스프링 MVC 기본편 👨‍💻 📌 수강 전 확인해주세요! 본 강의는 자바 스프링 완전 정복 시리즈의 네 번째 강의입니다. 우아한형제들 최연소

www.inflearn.com

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함