Spring MVC(Model-View-Controller)는 Spring 프레임워크의 웹 애플리케이션 개발을 위한 디자인 패턴 및 아키텍처입니다. Spring MVC는 사용자 인터페이스와 비즈니스 로직을 분리하여 유지보수성과 확장성을 향상시키는 데 중점을 둡니다. Spring MVC의 구조는 주로 다음과 같은 세 가지 주요 구성 요소로 나눌 수 있습니다:
- Model (모델):
- 모델은 애플리케이션의 데이터와 비즈니스 로직을 나타냅니다.
- 비즈니스 로직을 처리하고 데이터를 저장, 검색, 조작하는데 사용됩니다.
- 모델은 POJO(Plain Old Java Object)로 표현되며, Spring에서는 @Entity 어노테이션이 붙은 JavaBeans, JPA 엔터티 등을 모델로 사용합니다.
- View (뷰):
- 뷰는 사용자에게 표시되는 화면과 사용자 인터페이스를 나타냅니다.
- HTML, JSP, Thymeleaf, FreeMarker 등과 같은 템플릿 엔진을 사용하여 모델의 데이터를 표시하고 사용자에게 보여줍니다.
- 뷰는 모델의 상태에 따라 동적으로 업데이트되며, 사용자와 상호작용하는 화면 부분을 담당합니다.
- Controller (컨트롤러):
- 컨트롤러는 사용자 입력 및 이벤트를 처리하고, 모델의 업데이트 및 뷰의 선택을 관리합니다.
- 클라이언트의 요청을 처리하고, 그에 따라 모델의 데이터를 업데이트하고 적절한 뷰를 선택하여 응답을 생성합니다.
- 주로 Spring에서는 @Controller 어노테이션이 붙은 클래스로 표현되며, 메서드 단위로 요청을 처리하는데, 이를 통해 하나의 컨트롤러에서 여러 동작을 처리할 수 있습니다.
Spring MVC 애플리케이션은 주로 다음의 흐름으로 동작합니다:
- 클라이언트가 웹 브라우저 등을 통해 HTTP 요청을 보냅니다.
- Dispatcher Servlet이 요청을 받고, Handler Mapping을 사용하여 어떤 컨트롤러가 해당 요청을 처리할지 결정합니다.
- 선택된 컨트롤러가 비즈니스 로직을 수행하고 모델을 업데이트합니다.
- 모델의 상태에 따라 적절한 뷰를 선택하여 결과를 생성합니다.
- Dispatcher Servlet이 클라이언트에게 응답을 보냅니다.
Spring MVC 구성 요소:
- Dispatcher Servlet:
- 모든 클라이언트 요청의 진입점으로 동작합니다.
- 클라이언트의 요청을 받아 해당 요청을 처리할 컨트롤러를 찾아줍니다.
- web.xml 파일에 등록하거나 Spring Boot에서는 자동으로 등록됩니다.
- Handler Mapping:
- 클라이언트의 요청 URL에 해당하는 컨트롤러를 찾아주는 역할을 합니다.
- @RequestMapping 어노테이션 등을 사용하여 URL 매핑을 지정할 수 있습니다.
- Controller:
- 클라이언트의 요청을 처리하고, 비즈니스 로직 수행 후 모델을 업데이트하고 뷰를 선택하는 역할을 합니다.
- @Controller 어노테이션을 사용하여 선언하며, 메서드에는 @RequestMapping 등을 사용하여 URL 매핑을 지정합니다.
- Model:
- 비즈니스 로직의 처리 결과를 담고 있는 데이터 객체입니다.
- 뷰에 전달되어 뷰에서 데이터를 표시하게 됩니다.
- Model 객체나 ModelMap, ModelAndView 등을 사용하여 모델 데이터를 저장하고 전달합니다.
- View:
- 사용자에게 결과를 표시하는 부분으로, HTML, JSP, Thymeleaf 등을 사용합니다.
- InternalResourceViewResolver 등을 통해 뷰를 해석하고 템플릿 엔진을 적용할 수 있습니다.
Spring MVC 동작 흐름:
- 클라이언트 요청:
- 클라이언트(브라우저 등)에서 HTTP 요청을 보냅니다.
- Dispatcher Servlet 동작:
- Dispatcher Servlet이 요청을 받아 처리합니다.
- Handler Mapping을 통해 어떤 컨트롤러가 해당 요청을 처리할지 결정합니다.
- Controller 처리:
- 선택된 컨트롤러가 클라이언트의 요청을 처리하고 비즈니스 로직을 수행합니다.
- 필요한 경우 모델을 업데이트하고, 뷰 이름을 반환합니다.
- View Resolver 동작:
- View Resolver는 뷰 이름을 실제 뷰 객체로 변환합니다.
- 주로 JSP, Thymeleaf, FreeMarker 등의 템플릿 엔진을 사용하여 뷰를 렌더링합니다.
- 클라이언트 응답:
- 최종적으로 Dispatcher Servlet은 클라이언트에게 렌더링된 뷰를 응답으로 전송합니다.
이러한 구조를 통해 Spring MVC는 모델, 뷰, 컨트롤러를 분리하여 애플리케이션의 유지보수성, 확장성, 테스트 용이성을 높일 수 있습니다.
'BACKEND > 스프링 Spring' 카테고리의 다른 글
타임리프 문법 정리 (0) | 2023.12.19 |
---|---|
뷰 템플릿 호출 3가지 방법 (0) | 2023.12.17 |
root-context.xml , web.xml , dispatcher-servlet.xml , pom.xml 설정 이유 (0) | 2023.12.17 |
[spring3.0] 파일 업로드 , 파일 다운로드 (0) | 2022.03.30 |
[spring3.0] 게시판 3.0 Spring Web View (0) | 2022.03.30 |