스프링 MVC(Model-View-Controller) 모델은 자바 기반의 웹 애플리케이션 프레임워크인 스프링 프레임워크(Spring Framework)에서 제공하는 구조적인 패턴이다. 이 모델은 웹 애플리케이션의 개발을 단순화하고 유지보수를 용이하게 하며, 명확한 역할 분리를 통해 코드의 재사용성과 확장성을 높이는 데 도움을 준다. 스프링 MVC 모델은 크게 세 가지 구성 요소로 나뉜다.
1. Model (모델)
모델은 애플리케이션의 데이터와 그 데이터를 처리하는 로직을 담당한다. 주로 데이터베이스와 상호작용하며, 애플리케이션의 핵심 비즈니스 로직을 포함한다.
- 데이터 객체 (Domain Objects): 애플리케이션에서 사용되는 데이터 구조를 정의한다.
- 서비스 (Services): 비즈니스 로직을 구현하고 데이터 처리를 담당한다.
- DAO (Data Access Objects): 데이터베이스와 직접 상호작용하여 데이터를 CRUD(Create, Read, Update, Delete)하는 역할을 한다.
2. View (뷰)
뷰는 사용자에게 데이터를 표시하는 역할을 한다. 주로 HTML, JSP, Thymeleaf 등의 템플릿 엔진을 사용하여 구현된다. 뷰는 사용자 인터페이스를 담당하며, 모델로부터 데이터를 받아서 이를 사용자에게 적절히 표시한다.
3. Controller (컨트롤러)
컨트롤러는 사용자의 요청을 처리하고 적절한 모델과 뷰를 선택하여 응답을 생성하는 역할을 한다. 사용자의 요청을 받고, 해당 요청을 처리하기 위해 필요한 모델 데이터를 준비하며, 그 데이터를 뷰에 전달합니다. 스프링에서는 주로 @Controller 또는 @RestController 어노테이션을 사용하여 컨트롤러를 정의한다.
스프링 MVC의 동작 흐름
- 사용자의 요청: 사용자가 웹 애플리케이션에 요청을 보낸다. 이 요청은 URL을 통해 전달된다.
- 디스패처 서블릿 (Dispatcher Servlet): 스프링 MVC의 진입점으로, 모든 요청을 받아서 적절한 컨트롤러에 전달한다. web.xml 또는 자바 설정 파일에서 정의된다.
- 핸들러 매핑 (Handler Mapping): 디스패처 서블릿이 요청 URL을 분석하여 어느 컨트롤러가 요청을 처리할지 결정한다.
- 컨트롤러 (Controller): 핸들러 매핑에 의해 선택된 컨트롤러가 요청을 처리하고, 필요한 비즈니스 로직을 수행한다. 이 과정에서 모델 데이터를 생성하거나 수정할 수 있다.
- 모델 및 뷰 (Model and View): 컨트롤러는 처리 결과를 모델 객체에 담고, 이를 뷰에 전달한다.
- 뷰 리졸버 (View Resolver): 뷰 리졸버가 뷰의 이름을 받아 실제 뷰 객체(예: JSP 파일)를 결정한다.
- 뷰: 최종적으로 뷰가 모델 데이터를 사용하여 사용자에게 HTML 등의 형식으로 응답을 생성한다.
- 응답 전송: 생성된 응답이 사용자에게 전송된다.
'Spring' 카테고리의 다른 글
[Spring] web.xml 한글 필터 (0) | 2024.05.20 |
---|---|
[Spring] File Upload (0) | 2024.05.20 |
[Spring] Maven Project (0) | 2024.05.20 |
[Spring] Annotation(Lombok) (0) | 2024.05.20 |
[Spring] Annotation (2) | 2023.10.18 |