소소한개발팁
article thumbnail
Published 2020. 1. 6. 17:57
Spring MVC 프레임워크/Spring
반응형

MVC(Model-View-Controller) 패턴의 개념

모델-뷰-컨트롤러(Model-View-Controller,MVC)는 소프트웨어 공학에서 사용되는 아키텍쳐 패턴으로 MVC패턴의 주 목적은 Business logic과 Presentation logic을 분리하기 위함이다.

 

MVC패턴을 사용하면, 사용자 인터페이스로부터 비지니스 로직을 분리하여 어플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있음

 

Model: 애플리케이션의 정보(데이터,Business Logic 포함)

View : 사용자에게 제공할 화면(Presentation Logic)

Controller: Model과 View 사이의 상호 작용을 관리

 

각각의 MVC 컴포넌트의 역할

 

모델 (Model)컴포넌트

데이터 저장소(ex:데이터 베이스) 와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 일을 한다.

여러 개의 데이터 변경 작업(추가,변경,삭제)을 하나의 작업으로 묶는 트랜잭션을 다루는 일도 함

DAO 클래스, Service 클래스에 해당

 

뷰(view)컴포넌트 

모델이 처리한 데이터나 그 작업 결과를 가지고 사용자에게 출력할 화면을 만드는 일을 함.

생성된 화면은 웹 브라우저가 출력하고 뷰 컴포넌트는 HTML과 CSS.JavaScript를 사용하여 웹 브라우저가 출력할 UI를 만듦..

html과 JSP 를 사용하여 작성할 수 있음/

 

컨트롤러(Controller) 컴포넌트

클라이언트의 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출하는 일을 함. 

클라이언트가 보낸 데이터가 있다면, 모델을 호출할 때 전달하기 쉽게 데이터를 가공하는 일을 함.

모델이 업무 수행을 완료하면 ,그 결과를 가지고 화면을 생성하도록 뷰에게 전달(클라이언트 요청에 대해 모델과 뷰를 결정하여 전달).

Servlet과 JSP를 사용하여 작성할 수 있음.

 

모델 2 아키텍쳐 개념

모델1 아키텍쳐 :Controller 역할을 JSP가 담당함.

모델2 아키텍쳐: Controller 역할을 Servlet이 담당함.

 

1.클라이언트가 컨트롤러 역할을 하는 서블릿에게 요청을 보냄

2.요청을 받은 서블릿이 모델을 호출함

3.SQL을 통해 DBMS에서 결과를 반환받음

4.모델은 그결과를 VO 객체에 저장 그 후에 서블릿에게 결과가 저장된 VO객체에 대한 값을 보냄

5. 서블릿은 받은 VO객체를 VIEW 역할을 하는 JSP에게 보냄

6.JSP는 전달받은 VO 객체안의 값을 참조하여 결과화면을 서블릿에게 보냄

7. 서블릿은 클라이언트에게 결과화면을 보여준다.

Front  Controller 패턴 아키텍처

클라이언트->프론트Controller(Servlet or JSP) -> 어플리케이션 ->뷰

*Front Controller는 클라이언트가 보낸 요청을 받아서 공통적인 작업을 먼저 수행

*Front Controller는 적절한 세부 Controller에게 작업을 위임

*각각의 애플리케이션 Controller는 클라이언트에게 보낼 뷰를 선택하여 최종 결과를 생성하는 작업

*Front Controller 패턴은 인증이나 권한 체크처럼 모든 요청에 대하여 공통적으로 처리해야 하는 로직이 있을 경우 전체적으로 클라이언트의 요청을 중앙 집중적으로 관리하고자 할 경우에 사용 한다.

 

Spring MVC 개념

Spring MVC 의 특징

 

*Spring은 DI나 AOP 같은 기능뿐만 아니라, 서블릿 기반의 웹 개발을 위한 MVC 프레임 워크를 제공

*Spring MVC는 모델 2 아키텍쳐와 Front Controller 패턴을 프레임워크 차원에서 제공

*Spring MVC 프레임워크는 Spring 을 기반으로 하고 있기 때문에 Spring 이 제공하는 트랜잭션 처리나 DI 및 AOP 등을 손쉽게 사용

 

Spring MVC와 Front Controller 패턴

대부분의 MVC 프레임워크들은 Front controller 패턴을 적용해서 구현 

Spring MVC도 Front Controller 역할을 하는 DispatcherServlet 이라는 클래스를 계층의 맨 앞단에 놓고, 서버로 들어오는 모든 요청을 받아서 처리하도록 구성

예외가 발생했을 때 일관된 방식으로 처리하는 것도 Front Controller 역할

 

DispatcherServlet 클래스

*FrontController 패턴 적용

*web.xml 에설정

*클라이언트로부터의 모든 요청을 전달 받음

*Controller나 View 와 같은 Spring MVC의 구성요소를 이용하여 클라이언트에게 서비스를 제공

Spring MVC의 주요 구성 요소

DispatcherServlet 

: 클라이언트의 요청을 받아서 Controller 에게 클라이언트의 요청을 전달하고, 리턴한 결과값을 VIew에게 전달하여 알맞은 응답을 생성

 

HandlerMapping

:URL과 요청 정보를 기준으로 어떤 핸들러 객체를 사용할지 결정하는 객체이며, DispatcherServlet은 하나 이상의 핸들러 매핑을 가질 수 있음

 

Controller

:클라이언트의 요청을 처리한 뒤 ,Model를 호출하여 그 결과를 DispatcherServlet에게 알려 줌

 

ModelAndView

:Controller가 처리한 데이터 및 화면에 대한 정보를 보유한 객체

 

View

: Controller의 처리 결과 화면에 대한 정보를 보유한 객체

 

ViewResolver

:Controller가 리턴한 뷰 이름을 기반으로 Controller 처리 결과를 생성할 뷰를 결정

Spring MVC의 주요 구성 요소의 요청 처리 과정

1. 클라이언트의 요청이 DispatcherServlet에게 전달

2. DispatcherSerlvet 은 HandlerMapping을 사용하여 클라이언트의 요청을 처리할 Controller를 획득한다.

3. DispatcherSerlvet 은 Controller 객체를 이용하여 클라이언트의 요청을 처리한다.

4. Controller는 클라이언트의 요청 처리 결과와 View 페이지 정보를 담은 ModelAndView 객체를 반환한다.

5. DispatcherServlet은 ViewResolver로부터 응당 결과를 생성할 View 객체를 구한다.

6. View는 클라이언트에게 전송할 응답을 생성한다.

 

Spring MVC기반 웹 어플리케이션 작성 절차

1. 클라이언트의 요청을 받는 DispatcherServlet을 web.xml에 설정

2. 클라이언트의 요청을 처리할 Controller를 작성

3. Spring Bean으로 Controller 를 등록

4. JSP를 이용한 View 영역의 코드를 작성

5. Browser 상에서 JSP를 실행

반응형

'프레임워크 > Spring' 카테고리의 다른 글

Bean 의존관계 설정  (0) 2020.01.07
EL 과 JSTL  (0) 2020.01.06
Spring JDBC  (0) 2020.01.03
JUnit , Sprint Test  (0) 2020.01.03
STS(SpringSource Tool Suite)  (0) 2019.12.24
profile

소소한개발팁

@개발자 뱅

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!