본문 바로가기
Spring

05. MVC 모델

by hjwjddl 2023. 7. 21.

 

 

MVC 모델이란?

'프로그램의 처리 역할을 나누어서 프로그램을 작성하는 방법'으로 

웹 시스템 개발에 자주 사용된다. 역할은 모델(Model: M), 뷰(View: V), 컨트롤러(Controller: C)로 분류한다.

 

  • 모델(Model: M)

     시스템에서 비지니스 로직을 담당한다.
    시스템에서 제공하는 비지니스 로직의 처리 내용을 작성하는 역할을 한다.

     회원 가입할 때의 상황에 비유하자면 사용자가 입력한 아이디의 중복 확인, 본인 인증, 비밀번호 규칙 확인 등이 필요할 것이다. 이 중에서 중복 확인의 비지니스 로직을 생각해 보면 우선 사용자가 입력한 아이디 값을 메모리에 저장하고 회원 데이터베이스에서 같은 아이디가 있는지 확인 후 중복 여부를 화면에 표시할 수 있게 전달하는 것까지가 비지니스 로직이 된다.

 

  • 뷰(View: V)

     한마디로 설명하면 '외형'이다. 
    사용자 입력과 결과 출력 등 시스템에서 표현 부분을 담당하며 웹 애플리케이션에서는 주로 화면을 담당한다.

 

  • 컨트롤러(Controller: C)

     서비스 처리를 담당하는 모델과 화면 표시를 담당하는 를 제어하는 역할을 한다.
    사용자가 입력한 내용을 뷰에서 받고, 받은 데이터를 기준으로 모델에 내용을 전달한다. 또 모델에서 받은 데이터를 뷰에 전달해서 화면에 표시하는 역할을 한다.

 

 이렇게 모델, 뷰, 컨드롤러로 분류함으로써 프로그램의 독립성이 높아지고,

  • 역할 문담을 통해 효율적인 개발 가능
  • 개발하는 엔지니어의 분업화가 용이
  • 설계 변경에 유연하게 대응 가능

과 같은 이점을 얻을 수 있다.

 

 

 

 


 

 

 

 

스프링 MVC란?

 '웹 애플리케이션을 간단하게 만들 수 있는 기능을 제공하는 프레임워크이다.

주요 기능으로 화면 전환이나 사용자가 사용하는 브라우저와 서버 간의 입출력 데이터 전달을 단순화하는 등의 기능이 있다. 

 

스프링 MVC의 구성 요소
객체 기능 개요
DispatcherServlet 모든 요청을 수신하는 프런트 컨트롤러
Model 컨트롤러에서 큐에 넘겨주는 표시용 데이터 등을 저장하는 객체

(HttpServletRequest나 HttpSession과 같은 기능을 제공)
컨트롤러 요청에 대응해서 처리할 내용이 있는 곳
서비스 처리 데이터베이스에 접속해서 데이터를 취득하거나 데이터를 가공하는 등 여러 가지 작업을 실행

개발자가 설계하고 구현(스프링 MVC와 관계없음)
화면 표시 처리(구체적으로는 JSP 등의 처리)

 

 

스프링 MVC에서 요청에서 응답까지의 흐름

  1. 모든 요청을 수신하는 프론트 컨트롤러인 DispatcherServlet이 클라이언트로 부터 요청을 수신한다.
  2. DispatcherServlet이 컨트롤러의 요청 핸들러 메서드를 호출한다.
  3. 컨트롤러는 비지니스 로직 처리를 호출하고 처리 결과를 받는다.
  4. 처리 결과를 모델로 설정하고, 뷰 이름을 반환한다.
  5. 반환된 뷰 이름을 받아 DispatcherServlet이 뷰 이름에 대응하는 뷰에 대해 화면 표시 처리를 의뢰한다.
  6. 클라이언트가 응답을 받고 브라우저에 화면이 표시된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://wikibook.co.kr/spring/

 

스프링 프레임워크 첫걸음: 그림과 실습으로 쉽게 배우는 스프링 프레임워크 완벽 입문서

세상에서 가장 친절한 스프링 프레임워크 입문서! 스프링 프레임워크는 전 세계적으로 가장 널리 사용되는 오픈소스 자바 애플리케이션 프레임워크입니다. 이 책에서는 스프링 프레임워크를

wikibook.co.kr

 

'Spring' 카테고리의 다른 글

07. 요청 파라미터 취득하기  (0) 2023.08.06
06. 템플릿 엔진  (0) 2023.07.26
04 - 2 O/R 매퍼와 JDBC  (0) 2023.07.14
04 - 1 데이터베이스 작업  (0) 2023.07.14
03. 스프링 프레임워크의 핵심 기능  (0) 2023.07.09