Spring MVC: 요청 처리 관련

yshjft·2023년 12월 10일
0

Spring, JPA

목록 보기
13/16

정리 및 학습하게된 이유

  • 개발을 하다 Back단에서 404 에러가 발생하여 무엇이 문제인지 찾아 보았고 그 과정에서 알게된 내용 그리고 정리한 내용들을 velog에 작성한다.
  • 404 에러가 발생한 이유는 ModelAndView에 viewname을 설정하지 않으니 DispatcherServlet에서 default viewname을 설정해 주었는데 viewname에 해당하는 view가 존재하지 않았기 때문이다.

@Controller + View 반환

  • Controller에서 View 이름을 반환해주면 DispatcherServlet에서 View Resolver를 통해 View 이름에 해당하는 View를 찾아 반환해주게 된다.

@Controller + Data 반환

  • @Controller를 사용하는 경우는 View 반환에 초점이 맞추어져 있다.
  • 하지만 응답으로 View가 아닌 Data(ex. Json)를 받아야 하는 경우가 있다.
  • 이 때는 @ResponseBody를 이용하여 VIewResolver가 아닌 HttpMessageConverter가 동작하도록 해야 한다.

@RestController + Data 반환

  • 아주 쉽게 말하면 @RestController@Controller + @ResponeBody이다.
  • 당연히 해당 어노테이션을 사용하고 있는 클래스 내에 있는 메서드의 응답은 HttpMessageConverter를 사용하게 된다.

요청 처리 순서

  1. 요청이 DispatcherServlet 으로 들어온다
  2. DispatcherServlet.doDispatch() 호출
    내부에서 HandlerAdpater(RequestMappingHandlerAdapter)에게 요청을 처리하도록 handle() 메서드 호출
  1. HandlerAdapter에서 요청을 Controller로 전달

컨트롤러 메서드 실행 후 …

  1. 다시 Dispatcherservlet으로 돌아와 남은 로직 수행하며 요청에 대한 응답 마무리!

참고한 내용

[Spring] @Controller와 @RestController 차이

profile
꾸준히 나아가자 🐢

0개의 댓글