오늘의 나보다 성장한 내일의 나를 위해…
크리스마스 때는 뭐니뭐니 해도 공부지~
울지 말고 다시 말해봐..
오늘은 기분좋은 크리스마스 날이다. 새로운 지식을 쌓기에 정말 좋은 날인 것 같다.
그동안 제대로 알지 못하고 사용하고 있었던 Spring MVC에 대해서 알아보자.
Spring MVC
Spring MVC는 모델 2방식 구조이다.
모델2 방식이 뭘까?
화면을 담당하는 View적인 부분과 데이터를 처리하는 비즈니스로직 부분을 분리한 것으로 디자이너와 개발자의 작업분리가 되어 있어 작업하기 편리하며 재사용이 가능한 구조이다.
MVC는 Model, View, Controller의 약자라고 할 수 있다.
Model(모델): 데이터를 처리하는 부분
View(뷰): 화면을 담당하는 부분
Controller(컨트롤러): 요청을 처리하는 부분으로 뷰와 모델 사이의 통신 역할을 함
모델 2는 어떤 요청이 들어오면 Controller가 요청을 받고 요청에 해당하는 Model을 호출하게 된다. 호출된 Model은 데이터들을 처리한 후 Controller에게 요청에 대한 결과(응답)를 보내고 Controller는 View에게 전송하는 원리이다.
(요청->컨트롤러->모델->컨트롤러->뷰)
이 구조의 장점은 개발자와 디자이너(웹 퍼블리셔)의 작업공간을 분리시킬 수 있고 Controller는 URL을 통해 View를 제어하기 때문에 View(화면)을 변경하거나 수정할 대 유용하게 사용된다.
즉 유지보수가 좋다!
좀 더 구체적으로 구조적 설명을 해보자.
1. 클라이언트(사용자)의 모든 요청은 DispatcherServlet이 받는다.
2. DispatcherServlet은 handlerMapping을 통해서 요청에 해당하는 Controller를 실행 시킨다.
3. Controller는 적절한 서비스 객체를 호출 시킨다.
4. Service는 DB처리를 위해 DAO를 이용하여 데이터를 요청한다.
5. DAO는 mybatis를 이용하는 Mapper를 통해 처리를 한다.
6. 결과(처리한 데이터)가 mapper->DAO->Service->Controller로 전달된다.
7. Controller는 전달된 결과(처리된 데이터)를 View Resolver를 통해 전달 받을 View가 있는지 검색한다.
8. 전달 받은 View가 있다면 View에게 전달된 결과(처리된 데이터)를 전달한다.
9. View는 전달받은 결과(처리된 데이터)를 다시 DispatcherServlet에게 전달한다.
10. DispatcherServlet은 전달받은 결과(처리된 데이터)를 Client에게 전달한다.
-
Front Controller: 서버로 들어오는 모든 요청을 받아서 처리(공통 처리 작업을 먼저 수행 한 후 적절한 세부 controller에게 작업을 위힘해주고 예외 발생시 일관된 방식으로 에러를 처리해줌)
- 위와 같은 일을 하기 때문에 각 controller 사이의 중복된 코드 문제나 협업시 개발자들의 개발 방식이 다른 경우 등을 해결할 수 있음.