nickjoIT
MVC1, MVC2 패턴의 차이점과 Spring MVC 구조 본문
1. MVC
- Model, View, Controller의 줄임말로써, MVC는 사용자와 상호작용하는 S/W를 디자인함에 있어 세가지 요소로 쪼개어 하는 것을 가르킨다.
1) Model
- 프로그램의 내부 상태, 즉 프로그램의 정보(데이터)를 말하는 것이다.
2) Controller
- 데이터와 비즈니스 로직 간의 상호 작용을 뜻함
3) View
- 사용자 인터페이스 요소를 뜻하는데, 유저에게 보여지는 것을 말한다.
2. MVC1
- JSP로 구현한 기존 웹 어플리케이션은 모델 1 구조로 웹 브라우저의 요청을 JSP 페이지가 받아서 처리 하는 구조이다.
- JSP 페이지에 비지니스 로직을 처리 하기 위한 코드와 웹 브라우저에 결과를 보여주기 위한 출력 관리 코드가 뒤섞여 있는 구조
- JSP 페이지 안에서 모든 정보를 표현(view)하고 저장(model)하고 처리(control)되므로 재사용이 힘들고, 읽기도 힘들어 가독성이 떨어진다.
1) 정리
- 정의: 모든 클라이언트 요청과 응답을 JSP가 담당하는 구조
- 장점: 단순한 페이지 작성으로 쉽개 구현 가능하다. 중소형 프로젝트에 적합
- 단점: 웹 애플리케이션이 복잡해지면 유지보수 문제가 발생된다.
3. MVC2
- MVC1 구조와 달리 웹 브라우저의 요청을 하나의 서블릿이 받게 됨
- 서블릿은 웹 브라우저의 요청을 알맞게 처리한 후 그 결과를 JSP 페이지로 포워딩
2) 정리
- 정의: 클라이언트의 요청처리와 응답처리, 비지니스 로직 처리하는 부분을 모듈화시킨 구조
- 장점: 처리작업의 분리로 인해 유지보수와 확장이 용이하다.
- 단점: 구조 설계를 위한 시간이 많이 소요되므로 개발 기간이 증가한다.
4. 스프링 MVC 프레임워크
- 스프링이 제공하는 트랜잭션 처리, DI, AOP를 손쉽게 사용
- 스트럿츠2와 같은 프레임워크와 연동이 쉬움
5. 스프링 MVC 주요 구성 요소 및 처리 흐름
- 다른 MVC 프레임워크와 마찬가지로 컨트롤러를 사용하여 요청을 처리
- 스프링에서는 DispatcherServlet이 MVC에서의 컨트롤러(Controller)부분을 처리
구성 요소 | 설명 |
DispatcherServlet | 클라이언트의 요청을 전달받아 요청에 맞는 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성 |
HandlerMapping | 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정 |
Controller | 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에게 리턴 |
ModelAndView | 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음 |
ViewResolver | 컨트롤러의 처리 결과를 생성할 뷰를 결정 |
View | 컨트롤러의 처리 결과 화면을 생성, JSP 또는 Velocity 템플릿 파일 등을 뷰로 사용 |
6. 스프링 MVC 개발
[참고사이트]
http://arihong218.tistory.com/entry/MVC1-vs-MVC2
http://gangzzang.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81Spring-MVC-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%ACModel-View-Controller-Framework-1
'FRAMEWORK > SPRING' 카테고리의 다른 글
@Controller VS, @RestController, ResponseEntity (0) | 2018.02.05 |
---|---|
Spring interceptore, Spring filter 차이점 (0) | 2016.02.12 |
AOP (0) | 2016.02.06 |