- 들어가기 전에
이번 시간에는 Spring 프레임워크에서 웹 어플리케이션 작성을 위해 제공하는 Web MVC 모듕레 대해 알아보도록 하자.
- 학습 목표
1. MVC Model 1과 MVC Model 2 구조의 차이점에 대해 이해한다.
2. 발전된 형태의 MV Model 2 구조에 대해 이해한다.
- 핵심 개념
- MVC Model 1
- MVC Model 2
- Spring MVC
- MVC
- Model-View-Controller의 약자
- 원래는 제록스 연구소에서 일하던 트뤼그베 린즈커그가 처음으로 소개한 개념으로, 데스크톱 어플리케이션용으로 고안되었다.
- Model : 모델은 뷰가 렌더링하는데 필요한 데이터. 예를 들어 사용자가 요청한 상품 목록이나, 주문 내역이 이에 해당한다.
- View : 웹 어플리케이션에서 뷰(View)는 실제로 보이는 부분이며, 모델을 사용해 렌더링을 한다. 뷰는 JSP, JSF, PDF, XML 등으로 ㅕㄹ과를 표현한다.
- Controller : 컨트롤러는 사용자의 액션에 응답하는 컴포넌트이다. 컨트롤러는 모델을 업데이트하고, 다른 액션을 수행한다.
- MVC Model 1 아키텍처
- 브라우저가 요청을 하게되면 해당 요청을 JSP가 받게된다. 따라서 요청만큼 JSP 페이지가 존재해야한다.
- 이런 JSP는 Java로 만들어진 클래스인 Java Bean을 이용해서 데이터베이스를 사용하게 되고, 이 결과를 화면에 출력하는 일을 하게된다. 여기에서 이야기하는 Jaba Bean은 앞에서 실습한 JDBC로 작성했던 RoleDao 이런 클래스가 Java Bean과 유사한 클래스.
- 이런 방식으로 처리했을 때의 문제점은 JSP 자체에 Java 코드와 HTML 코드들이 섞여있게된다. 그렇다보니까 유지보수가 어려워졌음
- MVC Model 2 아키텍처
- Model 2 아키텍처같은 경우는 요청 자체를 서블릿이 받게하고, 서블릿이 Java Bean을 이용해 DB에서 데이터를 꺼내오고, 이런 결과들을 JSP를 통해 결과를 화면에 보여주게 한다.
- 위 그림에서 서블릿은 요청과 데이터를 처리하는 컨트롤러의 역할을 수행하고, JSP는 모델의 결과를 보여주게하는 View의 역할을 하고 있다. 이렇게 함으로써 로직과 뷰를 분리할 수 있게 된다.
- MVC Model 2 발전형태
- 클라이언트가 보내는 모든 요청을 프론트 컨트롤러라고 하는 서블릿 클래스가 다 받는다. 이 서블릿은 딱 하나만 존재하며, 모든 요청 클래스를 다 받는다.
- 프론트 컨트롤러는 요청만 받고 실제 일을 처리하지는 않는다. 실제 일은 컨트롤러 컨트롤러에게 위임한다. 이런 컨트롤러 클래스를 가리켜서 컨트롤러 클래스 혹은 핸들러 클래스라고 이야기한다.
- 서블릿은 관련된 요청을 처리하기에 조금 불편한 구조를 가지며, 이를 해결하기 위해 사용자의 모든 요청은 서블릿이 받고 그 요청의 실제 처리는 컨트롤러 혹은 핸들러라고 불리는 클래스에게 위임함으로써 관련된 URL을 하나의 클래스에서 다 처리할 수 있도록 하게 된다. 이런 컨트롤러는 Java Bean 등을 이용해서 결과를 만들어내고, 만들어진 결과를 모델에다 담고 프론트 컨트롤러에게 보내면 프론트 컨드롤러는 알맞은 뷰에게 모델을 전달해서 그 결과를 출력하게 된다.
- Spring Web Module
- Model 2 MVC 패턴을 지원하는 Spring Module
'Progamming > BoostCourse' 카테고리의 다른 글
Spring MVC를 이용한 웹 페이지 작성 실습 (0) | 2019.03.14 |
---|---|
Spring MVC 구성요소 (0) | 2019.03.14 |
Spring JDBC 실습 (0) | 2019.03.13 |
Spring JDBC 소개 (0) | 2019.03.13 |
Java Config를 이용한 설정 (0) | 2019.03.13 |
댓글