[Spring] MVC

정리


스프링 MVC란

  • DispathcherServlet이라는 프론트 컨트롤러를 등록해두고 공통적인 작업을 수행한 후 핸들러를 호출하는 방식으로 동작

스프링 MVC 구성 요소

구성 요소 설명
DispatcherServlet 모든 연결을 담당. 웹 브라우저로부터 요청이 들어오면 그 요청을 처리하기 위한 컨트롤러를 검색한다. 컨트롤러에게 클라이언트의 요청을 전달하고, 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성하도록 한다.
HandlerMapping 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 검색한다.
HandlerAdapter DispatcherServlet의 처리 요청을 변환해서 컨트롤러에게 전달하고, 컨트롤러의 응답 결과를 DispatcherServlet이 요구하는 형식으로 변환한다.
컨트롤러(Controller) 클라이언트의 요청을 처리한 뒤, 결과를 리턴한다. 응답 결과에서 보여줄 데이터를 모델에 담아 전달한다.
ModelAndView 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다.
ViewResolver 컨트롤러의 처리 결과를 보여줄 뷰를 결정한다.
뷰(View) JSP를 이용하여 웹브라우저에 컨트롤러의 처리 결과 화면을 생성한다.

동작방식

spring-mvc01

  1. 웹 브라우저로부터 요청
  2. 요청에 해당하는 컨트롤러를 HandlerMapping 이 검색하여 DispatcherServlet으로 전달
  3. DispatcherServlet은 HandlerMapping이 찾아준 Controller를 실행하기 위해 HandlerAdapter에 요청처리를 위임
  4. HandlerAdapter는 Controller의 알맞은 메서드를 호출하여 요청을 처리
  5. 처리 결과를 DispatcherServlet에 리턴
  6. 이때 HandlerAdapter는 컨트롤러의 처리결과를 ModelAndView라는 객체로 변환한 다음에 DispatcherServlet에 리턴
  7. DispatcherServlet은 ViewResolver를 통해 결과를 보여줄 View를 검색
  8. DispatcherServlet은 ViewResolver가 리턴한 View객체에게 응답 결과 생성을 요청
  9. View객체는 JSP를 실행함으로써 웹 브라우저에 전송할 응답 결과를 생성

참고