Model 1
- JSP 파일에서 Controller와 View 기능을 모두 처리한다.
- JSP 파일에 자바 코드와 마크업 관련 코드들이 섞여있어 디버깅과 유지보수가 어렵다.
- 대규모 시스템 개발에 사용하기는 부적합한 아키텍처이다.
JSP와 JavaBeans만 사용하여 웹을 개발하는 것으로 구조는 다음과 같다.
Model 2
- Model 1의 단점을 보완하고자 나온 아키텍처이다. 일반적으로 우리가 알고 있는 MVC(Model View Controller)가 바로 이 아키텍처이다.
- Model, View, Controller 각각의 역할이 분리되어 업무를 명확하게 나누어 작업할 수 있다. ( View = 웹 디자이너 , Model, Controller = 개발자 )
- 해당하는 역할별로 나뉘어 있어 디버깅과 유지보수가 상대적으로 쉽다.
Model 2 아키텍처의 중요한 특징은 Controller의 등장이며 구조는 다음과 같다.
스프링 MVC
- Model 2 아키텍처에서 만약 하나의 서블릿으로 Controller를 구현하면 클라이언트의 모든 요청을 하나의 서블릿이 처리하게 되어 수많은 분기 처리 로직을 가질 수 있다. 이는 새로운 기능을 추가할 때마다 분기 처리 로직이 계속 늘어나기 때문에 복잡도가 올라가고 유지보수도 쉽지않을 것이다.
- 스프링 프레임워크는 개발과 유지보수의 편의성이 보장되도록 디자인 패턴을 결합하여 효율적인 MVC를 구현해놓았다.
스프링 MVC 구조는 다음과 같다.
1. 클라이언트로부터 모든 ".do" 요청을 DispatcherServlet이 받는다.
2. DispatcherServlet은 HandlerMapping을 통해 요청을 처리할 Controller를 검색한다.
3. DispatcherServlet은 검색된 Controller를 실행하여 클라이언트의 요청을 처리한다.
4. Controller는 비즈니스 로직의 수행 결과로 얻어낸 Model 정보와 Model을 보여줄 View 정보를 ModelAndView 객체에 저장하여 리턴한다.
5. DispatcherServlet은 ModelAndView로부터 View 정보를 추출하고, ViewResolver를 이용하여 응답으로 사용할 View를 얻어낸다.
6. DispatcherServlet은 ViewResolver를 통해 찾아낸 View를 실행하여 응답을 전송한다.
[참고자료]
채규태, 『스프링 퀵 스타트』, 루비페이퍼
'Java > Spring Framework' 카테고리의 다른 글
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(2) (0) | 2021.08.10 |
---|---|
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(1) (0) | 2021.08.10 |
[스프링 핵심 원리 - 기본편] 좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2021.08.07 |
[스프링 핵심 원리 - 기본편] 좋은 객체 지향 프로그래밍이란? (0) | 2021.08.04 |
[스프링 핵심 원리 - 기본편] 스프링 프레임워크, 스프링 부트 용어 이해 (0) | 2021.08.03 |