5. 스프링 MVC - 구조 이해

2024. 3. 16. 02:04·Spring/MVC 1

[스프링 MVC 구조]

 

 

 

 

DispatcherServlet

: Spring MVC에서 프론트 컨트롤러 패턴을 구현한 것.

모든 클라이언트의 요청을 받아들여, 해당 요청을 처리할 적절한 컨트롤러와 매핑한다.

 

 

DispatcherServlet.doDispatch()

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

protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {

     HttpServletRequest processedRequest = request;
     HandlerExecutionChain mappedHandler = null;
     ModelAndView mv = null;
     
     // 1. 핸들러 조회
     mappedHandler = getHandler(processedRequest);
     if (mappedHandler == null) {
         noHandlerFound(processedRequest, response);
         return;
     }
     
     // 2. 핸들러 어댑터 조회 - 핸들러를 처리할 수 있는 어댑터
     HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
     
     // 3. 핸들러 어댑터 실행 -> 4. 핸들러 어댑터를 통해 핸들러 실행 -> 5. ModelAndView 반환 mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
     processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);

}



private void processDispatchResult(HttpServletRequest request, HttpServletResponse response, HandlerExecutionChain mappedHandler, ModelAndView mv, Exception exception) throws Exception {
           
     // 뷰 렌더링 호출
     render(mv, request, response);

}



protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception {

     View view;
     String viewName = mv.getViewName();
     
     // 6. 뷰 리졸버를 통해서 뷰 찾기, 7. View 반환
     view = resolveViewName(viewName, mv.getModelInternal(), locale, request);
     
     // 8. 뷰 렌더링
     view.render(mv.getModelInternal(), request, response);
     
 }

 

 

 

- Handler Mapping과 Handler Adapter

스프링 MVC에서는 기본적으로 어노테이션 기반의 컨트롤러를 대부분 사용하고 있다.

@Controller로 선언된 적절한 컨트롤러를 호출하기 위해, 정의되고 사용되는 것이 다음의 핸들러 매핑과 핸들러 어댑터이다.

 

 

[RequestMappingHandlerMapping]

- Controller 클래스나 메소드에 선언된 @RequestMapping과 구체 어노테이션(@GetMapping, @PostMapping 등)을 스캔한다.

- 요청 URL, HTTP 메소드, 파라미터, 헤더 등의 정보를 분석하여 가장 적절한 컨트롤러 메소드를 찾는 역할을 한다.

 

[RequestMappingHandlerAdapter]

- RequestMappingHandlerMapping에 의해 선택된 컨트롤러 메소드를 실제로 실행한다.

- @RequestBody, @ResponseBody, @RequestParam, @PathVariable 등의 어노테이션을 처리하기 위한 플로우를 제공한다.

 

 

 

 

- View Resolver

컨트롤러에서 반환된 view 이름을 실제 view 구현으로 매핑하여 렌더링할 수 있도록 한다.

예를 들어 'home' 이라는 view 이름을 반환하면, ViewResolver는 어떤 뷰 기술로 구현된 파일에 연결해야 하는지 결정한다.

 

저작자표시 (새창열림)

'Spring > MVC 1' 카테고리의 다른 글

7. 스프링 MVC - 웹 페이지 만들기  (0) 2024.03.19
6. 스프링 MVC - 기본 기능  (0) 2024.03.18
4. MVC 프레임워크 만들기  (0) 2024.03.14
3. 서블릿, JSP, MVC 패턴  (0) 2024.03.13
2. 서블릿  (0) 2024.03.11
'Spring/MVC 1' 카테고리의 다른 글
  • 7. 스프링 MVC - 웹 페이지 만들기
  • 6. 스프링 MVC - 기본 기능
  • 4. MVC 프레임워크 만들기
  • 3. 서블릿, JSP, MVC 패턴
wch_t
wch_t
  • wch_t
    끄적끄적(TIL)
    wch_t
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (170)
      • Architecture (0)
      • Algorithm (67)
        • Math (5)
        • Simulation (1)
        • Data Structure (4)
        • DP (7)
        • Brute Fource (10)
        • Binary Search (6)
        • Greedy (2)
        • Graph (11)
        • Mst (1)
        • Shortest path (10)
        • Two Pointer (1)
        • Tsp (3)
        • Union Find (2)
        • Mitm (1)
      • CS (2)
        • 데이터베이스 (5)
        • 네트워크 (5)
      • DB (6)
      • DevOps (17)
        • AWS (9)
        • Docker (1)
        • CI-CD (5)
      • Error (1)
      • Project (0)
        • kotrip (0)
      • Spring (59)
        • 끄적끄적 (5)
        • 기본 (9)
        • MVC 1 (7)
        • MVC 2 (11)
        • ORM (8)
        • JPA 1 (7)
        • JPA 2 (5)
        • Spring Data Jpa (7)
      • Test (2)
      • TIL (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    response_mode
    TempTable
    scope
    백준 17299 파이썬
    백준 17289 파이썬
    Sxssf
    Jenkins
    docker: not found
    Merge
    spring-cloud-starter-aws-secrets-manager-config
    spring-cloud-starter-bootstrap
    view algorithm
    백준 3015 파이썬
    docker
    form_post
    aws secrets manager
    애플
    apache poi
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
wch_t
5. 스프링 MVC - 구조 이해
상단으로

티스토리툴바