티스토리 뷰

Server/Spring

MVC 구조

JJIINDOL 2023. 7. 5. 18:29

1. MVC 구조란?


MVC 구조는 Model, View, Controller로 구성된 구조이다. 이를 이용하면 웹페이지를 구성하는 요소들(시간적인 요소, 데이터를 담당하는 요소) 들끼리의 간섭 없이 각각 독립적으로 개발함으로써 큰 효율을 낼 수 있다는 장점이 있다.

 

2. Model (데이터를 다루는 주방장)


Model은 데이터를 처리하는 역할을 담당한다. Controller에서의 명령을 받고 DB에 데이터를 저장하거나 삭제, 업데이트, 변환 등의 작업을 수행한다.

1) 사용자가 편집하기 원하는 모든 데이터를 가지고 있어야 한다. 즉, 화면 안의 네모박스에 글자가 표현되도록 사용자가 설정하였으면, 네모박스의 위치, 크기, 글자의 내용, 글자의 위치 등의 정보를 가지고 있어야 한다.

2) View나 Controller에 대해 어떤 정보도 알지 못해야 한다. 즉, Model은 오로지 데이터와 관련된 작업을 하기 때문에 Model이 화면의 UI를 변경할 수 없다.

3) 변경이 발생하면 에 대한 처리 방법을 구현해야 한다.

 

 

3. View (데이터를 세팅하는 직원)


시각적인 부분, 화면을 담당하는 역할을 한다. 자세히 말하면 '모델의 데이터를 어떤 방식으로 사용자에게 보여줄까?' 를 연구하는 요소이다. Html, Css, Javascript,를 이용해 View를 만들어낸다.

1) 모델이 가지고 있는 데이터를 저장하면 안된다.

2) Model이나 Controller에 대한 정보를 알면 안 되고 단순히 표시해 주는 역할을 한다.

 

 

4. Controller (데이터의 흐름을 관리하는 매니저)


사용자가 접근하려는 URL에 따라서 요청사항을 파악한 후, 그 요청에 맞는 Model의 데이터를 의뢰하고 이를 View에 반영해서 사용자에게 알려준다. 간단히 Model과 View를 연결해 주는 역할을 한다.

1) Model 또는 View에 대한 정보를 알아야 한다.

2) Model 또는 View의 변경을 인지하여 대처해야 한다.

 

5. 웹사이트에서의 MVC 구조


 

1) 사용자가 웹사이트에 접속한다. (Uses)

2) Controller는 사용자가 요청한 웹페이지를 제공하기 위해 Model에서 데이터를 호출한다. (Manipulates)

3) Model은 DB나 파일과 같은 데이터 소스를 제어한 후 그 결과를 반환한다.

4) Controller는 Model이 반환한 결과를 View에 반영한다. (Updates)

5) 데이터가 반영된 View는 사용자에게 보인다. (Sees)

 

 

 

6. Spring MVC 실제 동작 구조


 

 

DispatcherServlet

DispatcherServlet은 HttpServlet을 상속받아 사용하고, 서블릿으로 동작한다.

  • DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet

DispacherServlet을 사용하면 서블릿으로 등록하면서 모든 경로에 (urlPatterns=”/”)에 대해 매핑한다.

 

요청 흐름

  • 서블릿이 호출되면 HttpServlet이 제공하는 service()가 호출된다.
  • 스프링 MVC는 FramworkServlet.service()를 시작으로 여러 메서드가 호출되면서 **DispacherServlet.doDispatch()**가 최종적으로 호출된다.

동작 순서

  1. 핸들러 조회 : 핸들러 매핑을 통해 URL에 매핑된 핸들러(컨트롤러)를 조회한다.
  2. 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.
  3. 핸들러 어댑터 실행 : 핸들러 어댑터를 실행한다.
  4. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행한다.
  5. ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환하여 반환한다.
  6. viewResolver 호출 : 뷰 리졸버를 찾고 실행한다.
  7. View 반환 : 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환한다.
  8. 뷰 렌더링 : 뷰를 통해 뷰를 렌더링 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Server > Spring' 카테고리의 다른 글

오류 해결(3)  (0) 2023.08.09
오류해결(2)  (0) 2023.07.16
오류 해결(1)  (0) 2023.07.16
MySQL  (0) 2023.07.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/09   »
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
글 보관함