일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자바
- 백엔드
- Spring Security
- spring cloud
- Java
- 스프링 시큐리티
- 데이터베이스
- CI/CD
- Spring
- computer science
- 도커
- 배포
- 스프링
- 웹 서버
- JPA
- CS
- spring batch
- mysql
- vm
- 스프링 배치
- web server
- virtualization
- spring boot
- Container
- 영속성 컨텍스트
- 컨테이너
- ORM
- 스프링 부트
- 가상화
- HTTP
- Today
- Total
개발 일기
[Spring Boot] Spring MVC - 구조 이해 본문
MVC란?
- MVC 패턴은 애플리케이션을 개발할 때 사용하는 디자인 패턴 중 하나이다.
- 애플리케이션의 개발 영역을 MVC(Model, View, Controller)로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식이다.
- MVC 패턴을 도입하면서 UI 영역과 도메인(비즈니스 로직) 영역으로 구분되어 서로에게 영향을 주지 않으면서 개발과 유지보수가 가능하다.
Model
Model은 애플리케이션의 데이터와 상태를 담당한다. 예를 들어, 사용자 정보를 저장하는 User 클래스가 Model에 해당합니다.
Controller에서 사용자 입력(DTO)을 받아 User 객체를 생성하고, 이 객체를 View에 전달하여 화면에 표시할 수 있다.
또한 Model에는 데이터베이스 연동을 위한 DAO(Data Access Object) 클래스도 포함될 수 있다. DAO 클래스는 User 객체를 데이터베이스에 저장하거나 조회하는 기능을 제공한다.
View
View는 사용자 인터페이스를 담당한다. 예를 들어, 사용자 정보를 입력받는 HTML 폼이 View에 해당한다. 사용자가 이름, 나이, 주소, 전화번호를 입력하면 이 정보가 Controller로 전달된다. 또한 Controller에서 전달받은 User 객체의 데이터를 화면에 표시하는 JSP 페이지도 View에 해당한다. View는 사용자와 직접 상호작용하며, 사용자 입력을 받고 결과를 출력하는 역할을 한다.
Controller
Controller는 사용자 요청을 처리하고, Model과 View를 연결하는 역할을 한다.
예를 들어, 사용자가 이름, 나이, 주소, 전화번호를 입력하면 Controller가 이 정보를 받아 User 객체를 생성하고 생성된 User 객체를 DAO 클래스를 통해 데이터베이스에 저장한다. 이후 View에 User 객체를 전달하여 사용자 정보를 화면에 표시합니다. 또한 사용자가 특정 URL을 요청하면 Controller가 이를 받아 적절한 View를 선택하여 응답을 생성한다.
즉, Model 데이터를 View로 전달한다.
Spring MVC 구조
위와 같은 MVC 디자인 패턴이 어디에 적용됐는가?
바로 Dispatcher Servlet(디스패처 서블릿)의 요청 처리 과정에 MVC 디자인 패턴이 적용됐다.
사용자가 HTTP 요청을 보내게 되면 Dispatcher Servlet이라는 프론트 컨트롤러로 들어가게 된다.
- DispatcherServlet은 요청 URL을 기반으로 HandlerMapping을 통해 적절한 핸들러(컨트롤러)를 조회하고 HandlerMapping은 요청 URL과 매핑된 컨트롤러 메서드를 찾아 DispatcherServlet에 반환한다.
- DispatcherServlet은 찾은 컨트롤러를 실행할 수 있는 HandlerAdapter를 조회한다.
HandlerAdapter는 컨트롤러의 실행 방식을 추상화하여, DispatcherServlet이 컨트롤러를 일관된 방식으로 호출한다. - DispatcherServlet은 찾은 HandlerAdapter를 통해 컨트롤러를 실행한다.
- HandlerAdapter는 컨트롤러의 메서드를 호출하여 실제 핸들러를 실행시킨다.
- HandlerAdapter는 컨트롤러가 반환한 결과를 ModelAndView 객체를 Dispatcher Servlet으로 반환한다.
- DispatcherServlet은 ModelAndView 객체에 포함된 뷰 이름을 기반으로 ViewResolver를 호출한다.
JSP의 경우 InternalResourceViewResolver가 자동으로 등록되어 사용된다. - ViewResolver는 Model을 기반으로 논리적인 뷰 이름을 물리적인 뷰 이름으로 변환하고 Dispatcher Servlet으로 렌더링 역할을 담당하는 뷰 객체를 반환한다. JSP의 경우 InternalResourceView(JstlView) 를 반환한다.
- 반환 받은 뷰를 통해서 뷰를 렌더링 한다.
위의 구조 보다는 아래의 구조가 내가 앞으로 주로 활용할 구조도이다.
'Back-End > Spring' 카테고리의 다른 글
[Spring Boot] 필터(Filter)와 인터셉터(Interceptor) (1) | 2024.05.02 |
---|---|
[Spring Boot] CGI, Servlet, Front Controller, Spring Web MVC (0) | 2024.05.02 |
[Spring Boot] Spring 3대 특징(Spring 삼각형) 3 - 관점 지향 프로그래밍(AOP) (0) | 2024.03.13 |
[Spring Boot] Spring 3대 특징(Spring 삼각형) 2 - 의존성 주입(DI)과 제어의 역전(IoC) (1) | 2024.03.13 |
[Spring Boot] Spring 3대 특징(Spring 삼각형) 1 - POJO(Plain Old Java Object) (0) | 2024.03.09 |