MVC
Model, View, Controller의 약자이며, 애플리케이션을 구성하는 요소를 역할에 따라 세 가지 모듈로 나누어 구분한 패턴
1. Model
어플리케이션의 데이터이며, 모든 데이터 정보를 가공하여 가지고 있는 컴포넌트
- 사용자가 이용하려는 모든 데이터를 가지고 있어야 하며, View 또는 Controller에 대해 어떤 정보도 알 수 없어야 한다.
- 변경이 일어나면 처리 방법을 구현해야 한다.
2. View
시각적인 UI요소를 지칭하는 용어
- Model이 가지고 있는 데이터를 저장하면 안 된다.
- Model이나 Controller에 대한 정보를 알면 안 되며 단순히 표시해주는 역할을 가지고 있다.
- 변경이 일어나면 처리 방법을 구현해야 한다.
3. Controller
Model과 View를 연결해주는 역할
- Model 또는 View에 대한 정보를 알아야 한다.
- Model 또는 View의 변경을 인지하여 대처를 해야 한다.
Spring MVC 기본구조
Spring의 MVC 구조는 MVC2 패턴 방식을 따르며 이 MVC2의 아키텍처에 맞게 설계되어 있다.
스프링에서는 유저의 요청을 받는 DispatherServlet이 핵심이다.
동작 순서
- 클라이언트가 서버에 요청을 하면 front controller 인 DispatcherServlet 클래스가 요청을 받는다.
- DispatcherServlet는 프로젝트 파일 내의 servelt-context.xml 파일의 @Controller 인자를 통해 등록한 요청 위임 컨트롤러를 찾아 매핑(mapping) 된 컨트롤러가 존재하면 @RequestMapping을 통해 요청을 처리할 메소드로 이동한다.
- 컨트롤러는 해당 요청을 처리할 Service를 받아 비즈니스 로직을 서비스에게 위임한다.
- Service는 요청에 필요한 작업을 수행하고, 요청에 대해 DB에 접근해야 한다면 DAO에 요청하여 처리를 위임한다.
- DAO는 DB 정보를 DTO를 통해 받아 서비스에게 전달한다.
- 서비스는 전달받은 데이터를 컨트롤러에게 전달한다.
- 컨트롤러는 Model 객체에게 요청받은 View 정보를 담아 DispatcherServlet에게 전송한다.
- DispatcherServlet는 ViewResolver에게 전달받은 View정보를 전달한다.
- ViewResolver는 응답할 View에 대한 JSP를 찾아 DispatcherServlet에게 전달한다.
- DispatcherServlet는 응답할 뷰의 Render를 지시하고 뷰는 로직을 처리한다.
- DispatcherServlet는 클라이언트에게 Rendering 된 뷰를 응답하며 요청을 마친다.
용어정리
*HandlerMapping
- 요청을 직접 처리할 컨트롤러를 탐색한다. 구체적인 mapping은 xml파일이나 java config 관련 어노테이션 등을 통해 처리할 수 있다.
*HandlerAdapter
- 매핑된 컨트롤러의 실행을 요청한다.
*Controller
- 직접 요청을 처리하며, 처리 결과를 반환한다. 여기서 결과가 반환되면 HandlerAdapter가 ModelAndView 객체로 변환되며, 여기에는 View Name과 같이 응답을 통해 보여줄 View에 대한 정보와 관련된 데이터가 포함되어 있다.
*View Resolver
- View Name을 확인한 후, 실제 컨트롤러로부터 받은 로직 처리 결과를 반영할 View 파일(jsp)을 탐색한다.
출처: https://ss-o.tistory.com/160, https://hpark3.tistory.com/28
'Spring' 카테고리의 다른 글
Ajax (0) | 2022.11.28 |
---|---|
[Spring] 스프링에서 자주 사용하는 Annotation (0) | 2022.11.24 |
[JSP] EL 과 JSTL 정리 (0) | 2022.10.26 |
[JSP] 기초 문법 (0) | 2022.10.25 |
[Spring] DAO, DTO, VO, Entity 란? (0) | 2022.10.22 |