본문 바로가기
프로그래밍/스프링 자바

[Spring] Spring MVC 이동 구조 (feat. jsp)

by 커피는아아 2021. 4. 20.
반응형

spring mvc 이동구조

  1. 클라이언트의 요청을 DispatcherServlet이 받는다.
  2. DispatcherServlet는 요청 URI을 HandlerMapping에게 보낸다.
  3. HandlerMapping은 요청 URI와 매핑되는 컨트롤러 요청핸들러메소드(String newbooks(Model model)) 정보를 Dispatcher에게 반환한다.
  4. DispatcherServlet은 컨트롤러, 요청핸들러메소드 정보를 HandlerAdapter에게 보내고, 요청핸들러메소드의 실행을 위임한다.
  5. HandlerAdapter는 요청핸들러 메소드의 시그니처를 분석한다.
    • 요청핸들러 메소드의 매개변수에 Model타입의 매개변수가 있음을 확인한다.
    • HandlerAdapter는 Model 객체를 생성한다.
    • 요청핸들러 메소드를 실행한다.
    • Model model = new Model();
    • String url = xxxController.newbooks(model)
  6. 요청핸들러 메소드가 클라이언트의 요청을 처리한다.
    • 서비스를 이용해서 업무로직을 수행한다.
    • 업무로직의 수행결과로 획득한 데이터를 model에 저장한다.
    • 뷰이름(jsp페이지의 폴더명 및 파일명)을 반환한다.
  7. HandlerAdapter는 ModelAndView객체를 생성하고, model에 저장된 데이터와 뷰이름을 ModelAndView객체에 저장한다. ModelAndview를 DispatcherServlet에게 반환한다.
  8. DispatcherServlet는 ModelAndView에 View객체가 있는지 확인한다. View객체가 없으면 ViewResolover(디폴트뷰 리졸브 - InterResourceViewResolver)에게 뷰이름을 전달하고 View객체를 검색하게 한다.
  9. InterResourceViewresolver는 뷰이름을 분석한다.
    • 뷰이름이 redirect로 시작하면 RedirectView에 재요청URL을 저장해서 DispatcherServlet에게 반환한다.
    • 뷰이름이 redirect로 시작하지 않으면 JSP로 내부이동하는 InternalResourceView에
    • 내부이동할 jsp페이지 경로를 저장해서 DispatcherServlet에게 반환한다. (설정된 prefix, suffix 사용)
  10. DispatcherServlet은 뷰리졸브가 반환한 뷰를 실행한다.
    • InternalResourceView 인 경우 jsp를 내부이동해서 Jsp가 실행되고, HTML이 응답으로 보낸다
    • RedirectView 인 경우 재요청할 URL을 응답으로 보낸다.

'프로그래밍 > 스프링 자바' 카테고리의 다른 글

JUnit5 정리  (0) 2021.06.28
TDD , 단위 테스트, 리팩토링  (0) 2021.06.28
[Java] 자바 JDBC 정리  (0) 2020.11.08
[Java] 자바 식별자 예약어  (0) 2020.11.08
[Java] 자바 특징과 설계도  (0) 2020.11.08