🌿 MVC (Model - View - Controller) 란?
Application의 확장을 위해 Model, View, Controller 3가지 영역으로 분리한 것이다. Component의 변경이 다른 영역 Component에 영향을 미치지 않아 유지보수가 용이하고 Component간의 결합성이 낮아 프로그램 수정이 용이해 확장성이 뛰어나다.
Model
- Service + Dao
- 상태 쿼리에 대한 응답으로 변경을 View에 통지
View
- 사용자의 입력을 Controller에 전달
- Model을 화면에 표현
Controller
- Application의 행위를 정의
- 사용자 요청에 맞는 view를 선택
🌿 MVC 의 장/단점
장점
- 화면과 비즈니스 로직을 분리해 작업이 가능 -> 유지보수 용이
- 영역별 개발로 인해 확장성 뛰어남
- 표준화된 코드 사용해 공동작업이 용이, 유지보수성 좋음
단점
- 개발과정이 복잡해 초기 개발속도가 늦음
- 초보자가 이해하고 개발하기에 어려움
Spring MVC 란?
Spring MVC는 MVC 기존 MVC2모델을 기반으로 Spring Framework에서 발전시킨 웹 모듈로 가장 큰 차이점은 Front Controller의 유무이다.
🌿 Spring MVC 특징
- DI나 AOP 기능 + Servlet 기반의 웹 개발을 위한 MVC Framework를 제공
- Model2 Architecture와 FrontController Pattern을 프레임워크 차원에서 제공
🌿 Spring MVC 구성요소
DispatcherServlet (Front Controller)
- client의 요청 받음
- Controller에게 클라이언트의 요청을 전달
- Controller의 반환값을 ViewResolver 태워 알맞는 View 화면에 표시
- 한개 이상의 HandlerMapping 가짐
HandlerMapping
- 클라이언트의 요청 URL을 어떤 Controller가 처리할지 결정
- URL, 요청정보를 기준으로 어떤 객체 사용할지 결정하는 객체
Controller
- client의 요청 처리 -> Model 호출 , DispatcherServlet에 결과 전달
ModelAndView
- Controller가 처리한 데이터 및 화면에 대한 정보를 보유하는 객체
ViewResolver
- Controller가 반환한 View 이름 기반으로 화면에 표시할 jsp 결정
View
- Controller의 처리결과 보여줄 응답 화면 생성
🌿 Spring MVC 실행 순서
- DispatcherServlet(Front Controller)이 Client의 요청 수신
- DispatcherServlet이 Handler Mapping(URL Mapping)을 통해 어느 Controller 사용할 것인지 선택위임
- Controller는 Service 및 DAO를 수행한 후 수행결과를 ModelAndView 객체에 담아 DispatcherServlet에 리턴
- DispatcherServlet는 이 반환값을 ViewResolver를 태워 논리적이름인 ViewName을 JSP파일로 변환
("index" -> /WEB-INF/views/index.jsp) - View는 해당 JSP파일을 화면에 표현
'Back-End > Spring' 카테고리의 다른 글
[Spring] 스프링 특징 IOC, AOP, DI 이란? (0) | 2023.12.14 |
---|---|
[Spring] pom.xml / web.xml / servlet-context.xml / root-context.xml (0) | 2023.04.30 |
[Spring] AOP (Aspect Oriented Programming) (0) | 2023.04.28 |
[Spring] DI (Dependency Injection) (0) | 2023.04.26 |
[Spring] Spring Framework란? (0) | 2023.04.25 |