본문 바로가기

프로그래밍 상식

[자바 상식] Spring MVC에 대하여

오늘은 Spring MVC패턴에 대해 간단히 알아보도록 하겠다.


MVC는 Model, View, Controller의 약자이며, 각 레이어 간 기능을 구분하는데 중점을 둔 디자인패턴입니다.

  • Model는 데이터 관리 및 비즈니스 로직을 처리하는 부분이며 (DAO, DTO, Service 등)
  • View는 비즈니스 로직의 처리 결과를 통해 유저 인터페이스가 표현되는 구간입니다. html, jsp 등으로 화면을 구성하기도 하고 Rest API로 서버가 구현된다면 json응답으로 구성되기도 한다.
  • Controller는 사용자의 요청을 처리하고 Model, View사이를 중개하는 역할을 합니다. Model과 View는 서로 연결되어있지 않아서 Controller가 사이에서 중개 매체가 되어줍니다.

MVC 패턴이 간단히 어떤 흐름으로 요청으로 처리되는지 알아보겠다.

DispatcherServlet : 클라이언트에게 요청을 받아 응답까지의 MVC 처리과정을 통제한다.
HandlerMapping : 클라이언트의 요청 URL을 어떤 Controller가 처리할지 결정한다.

HandlerAdapterHandlerMapping에서 결정된 핸들러 정보로 해당 메서드를 직접 호출해 주는 역할을 한다.
ViewResolver : Controller의 처리 결과(데이터)를 생성할 view를 결정한다.

1. 클라이언트는 URL을 통해 요청을 전송한다.

2. 디스패처 서블릿은 핸들러 매핑을 통해 해당 요청이 어느 컨트롤러에게 온 요청인지 찾는다.
3. 디스패처 서블릿은 핸들러 어댑터에게 요청의 전달을 맡긴다.
4. 핸들러 어댑터는 해당 컨트롤러에 요청을 전달한다.
5. 컨트롤러는 비즈니스 로직을 처리한 후에 반환할 뷰의 이름을 반환한다.
6. 디스패처 서블릿은 뷰 리졸버를 통해 반환할 뷰를 찾는다.
7. 디스패처 서블릿은 컨트롤러에서 뷰에 전달할 데이터를 추가한다.
8. 데이터가 추가된 뷰를 반환한다.

 

이렇게 정리하는 것은 개념도 알지 못하고 구현만 하다가 이번에 개념이 얼마나 부족한지 알게 되었다.. 

부족하다는 말보다 아직 미숙하다 좀 더 노력해야겠다.

반응형