Spring MVC 핵심 구조

DragonTiger·2022년 1월 19일
1

Spring의 MVC 핵심 구조

DispatcherServlet : 클라이언트의 요청을 전달받아 요청에 맞는 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성

HandlerMapping : 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정

Controller : 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에게 리턴

ModelAndView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음

ViewResolver : 컨트롤러의 처리 결과를 생성할 뷰를 결정

View : 컨트롤러의 처리 결과 화면을 생성 JSP, 템플릿 파일 등을 뷰로 사용

동작 순서

  1. 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.
  2. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.
  3. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다.
  4. 핸들러 실행: 핸들러 어댑터가 실제 핸들러를 실행한다.
  5. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다.
  6. viewResolver 호출: 뷰 리졸버를 찾고 실행한다.
  • JSP의 경우: InternalResourceViewResolver 가 자동 등록되고, 사용된다.
  1. View 반환: 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환한다.
  • JSP의 경우 InternalResourceView(JstlView) 를 반환하는데, 내부에 forward() 로직이 있다.
  1. 뷰 렌더링: 뷰를 통해서 뷰를 렌더링 한다

스프링 MVC의 큰 강점은 DispatcherServlet 코드의 변경 없이, 원하는 기능을 변경하거나 확장할 수 있다는 점이다. 지금까지 설명한 대부분을 확장 가능할 수 있게 인터페이스로 제공한다.

인터페이스 살펴보기
이 인터페이스들만 구현해서 DispatcherServlet 에 등록하면 여러분만의 컨트롤러를 만들 수도 있다.
주요 인터페이스 목록
핸들러 매핑: org.springframework.web.servlet.HandlerMapping
핸들러 어댑터: org.springframework.web.servlet.HandlerAdapter
뷰 리졸버: org.springframework.web.servlet.ViewResolver
뷰: org.springframework.web.servlet.View

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

profile
take the bull by the horns

0개의 댓글