MVC (Model - View - Controller)
- 소프트웨어의 디자인 패턴 중 하나
- 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리
- 코드의 재사용성과 유지보수성을 높이고, 개발자들간의 협업을 용이하게함
1. Model
- 데이터와 비즈니스 로직 담당
- DB와 연동하여 데이터를 저장하고 불러오는 등의 작업 수행
2. View
- 사용자의 인터페이스 담당
- 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현
3. Controller
- Model과 View 사이의 상호작용을 조정하고 제어
- 사용자의 입력을 받아 Model에 전달 - Model의 결과를 바탕으로 View 업데이트
SPRING MVC
- Servlet API를 기반으로 구축된 독창적인 웹 프레임워크
- 처음부터 Spring Framework에 포함되어 왔음
- 정식 명칭인 "Spring Web MVC"는 소스 모듈(spring-webmvc)의 이름에서 따왔으나, "Spring MVC"로 알려짐
- Spring에서 MVC 디자인 패턴을 적용하여 HTTP 요청을 효율적으로 처리하고 있음
Servlet 서블릿
- 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버측 프로그램, 사양
- 사용자가 브라우저를 통해 HTTP Request(API요청)을 함
- 요청 받은 서블릿은 약속된 HTTP규격에 맞는 데이터를 담은 객체 생성(HttpServletRequest, HttpServletResponse)
- API요청에 맞는 서블릿을 찾음(web.xml에서)
- 찾은 서블릿을 실행시킴
- 해당 서블릿에서 맞는 메서드를 찾아서 HttpServletRespons에 담아
- 브라우저에게 반환하며 생성했던 객체(HttpServletRequest, HttpServletResponse) 삭제
DispatcherServlet 디스패처서블릿 객체
- 전달하려는 서블릿
- 모든 API에 맞는 서블릿을 실행한다면 너무 많은 클래스를 구현해여함
- -> 따라서 DispatcherServlet을 사용하여 Front Controller방식으로 API요청을 효율적으로 처리함
- 브라우저에서 HTTP요청에 들어오면 DispatcherServlet가 요청 분석
- 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달
- 예) GET /api/hello → HelloController 의 hello() 함수
- 예) GET /user/login → UserController 의 login() 함수
- Handler mapping에는 API path/controller메서드가 매칭되어 있는걸 알수있음!
- 수행 후 결과(데이터)를 다시 DispatcherServlet으로 전달('Model-나의 포인트같은'와 'View-mypage.html같은' 정보를 전달)
- ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 응답으로 전달
'Spring > Springboot-Intellij' 카테고리의 다른 글
[SpringBoot] Spring MVC - 정적 페이지(thymeleaf, redirect, template)와 동적 페이지(Model) (0) | 2025.01.29 |
---|---|
[SpringBoot] Spring MVC - 인텔리제이(IntelliJ)를 이용하여 Controller생성, 이해하기 (0) | 2025.01.29 |
[SpringBoot] Lombok(@) / application.properties(설정변경) (0) | 2025.01.28 |
[Spring Boot] 테스트 코드, JUnit 제이유닛 (0) | 2025.01.28 |
[HTTP] HTTP(HyperText Transfer Protocol) (0) | 2025.01.28 |