[Spring] MVC
정리
스프링 MVC란
- DispathcherServlet이라는 프론트 컨트롤러를 등록해두고 공통적인 작업을 수행한 후 핸들러를 호출하는 방식으로 동작
스프링 MVC 구성 요소
구성 요소 | 설명 |
---|---|
DispatcherServlet | 모든 연결을 담당. 웹 브라우저로부터 요청이 들어오면 그 요청을 처리하기 위한 컨트롤러를 검색한다. 컨트롤러에게 클라이언트의 요청을 전달하고, 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성하도록 한다. |
HandlerMapping | 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 검색한다. |
HandlerAdapter | DispatcherServlet의 처리 요청을 변환해서 컨트롤러에게 전달하고, 컨트롤러의 응답 결과를 DispatcherServlet이 요구하는 형식으로 변환한다. |
컨트롤러(Controller) | 클라이언트의 요청을 처리한 뒤, 결과를 리턴한다. 응답 결과에서 보여줄 데이터를 모델에 담아 전달한다. |
ModelAndView | 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다. |
ViewResolver | 컨트롤러의 처리 결과를 보여줄 뷰를 결정한다. |
뷰(View) | JSP를 이용하여 웹브라우저에 컨트롤러의 처리 결과 화면을 생성한다. |
동작방식
- 웹 브라우저로부터 요청
- 요청에 해당하는 컨트롤러를 HandlerMapping 이 검색하여 DispatcherServlet으로 전달
- DispatcherServlet은 HandlerMapping이 찾아준 Controller를 실행하기 위해 HandlerAdapter에 요청처리를 위임
- HandlerAdapter는 Controller의 알맞은 메서드를 호출하여 요청을 처리
- 처리 결과를 DispatcherServlet에 리턴
- 이때 HandlerAdapter는 컨트롤러의 처리결과를 ModelAndView라는 객체로 변환한 다음에 DispatcherServlet에 리턴
- DispatcherServlet은 ViewResolver를 통해 결과를 보여줄 View를 검색
- DispatcherServlet은 ViewResolver가 리턴한 View객체에게 응답 결과 생성을 요청
- View객체는 JSP를 실행함으로써 웹 브라우저에 전송할 응답 결과를 생성