개발지식

MVC(Model-View-Controller) 패턴의 정의와 처리과정!

우루쾅 2024. 2. 27. 12:28
728x90
반응형
SMALL

MVC 패턴이란

모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. 

 

MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

● Model

Model은 소프트웨어나 애플리케이션에서 정보 및 데이터 부분을 의미합니다. 이는 Controller에게 받은 데이터를 조작(가공)하는 역할을 수행한다고 볼 수 있습니다. 즉 데이터와 관련된 부분을 담당하며 값과 기능을 가지는 객체라고 보면 됩니다.

 

View

View는 입력값이나 체크박스 등과 같은 사용자 인터페이스 요소를 나타낸다. 이는 Controller에게 받은 Model의 데이터를 사용자에게 시각적으로 보여주기 위한 역할을 수행한다. 사용자에게 보여지는 화면이라고 보면 된다.

 

Controller

Controller는 Model 과 View 사이에서 데이터 흐름을 제어한다. 사용자가 접근한 URL 에 따라 요청을 파악하고 URL에 적절한 Method 를 호출하여 Service에서 비즈니스 로직을 처리한다. 이 후 결과를 Model에 저장하여 View에게 전달하는 역할을 수행한다. 결국 Controller는 Model과 View의 역할을 분리하는 중요한 요소이다.

 

 

MVC 구동원리

C/S(Client - Server)구조로 요청을 하면 그에 맞는 응답을 하는 구조를 기본으로 하고 있다.

1. 웹 브라우저가 웹 서버에 웹 애플리케이션 실행을 요청한다. (MVC 구조가 WAS라고 보면 된다.)

2. 웹 서버는 들어온 요청을 처리할 수 있는 서블릿을 찾아서 요청을 전달한다. (Matching)


3. 서블릿은 모델 자바 객체의 메서드를 호출한다.

4. 데이터를 가공하여 값 객체를 생성하거나, JDBC를 사용하여 데이터베이스와의 인터랙션을 통해 값 객체를 생성한다.

5. 업무 수행을 마친 결과값을 컨트롤러에게 반환한다.

6. 컨트롤러는 모델로부터 받은 결과값을 View에게 전달한다.

7. JSP는 전달받은 값을 참조하여 출력할 결과 화면을 만들고 컨트롤러에게 전달한다.

8. 뷰로부터 받은 화면을 웹 서버에게 전달한다.

9. 웹 브라우저는 웹 서버로부터 요청한 결과값을 응답받으면 그 값을 화면에 출력한다.

 

 

 

스프링 MVC 처리과정

 

 

① 사용자의 요청이 서버에 도착합니다. 스프링 MVC에서는 DispatcherServlet이 이 요청을 가장 먼저 받습니다.

 

② DispatcherServlet은 HandlerMapping에게 요청을 전달합니다. HandlerMapping은 요청 URL을 기반으로 적절한 Controller를 찾아 DispatcherServlet에게 알려줍니다.

 

③ DispatcherServlet는 HandlerMapping으로부터 받은 Controller 정보를 바탕으로 해당 Controller의 메서드를 호출합니다. 이때, 요청의 정보를 담은 HttpServletRequest 객체와 응답을 위한 HttpServletResponse 객체가 파라미터로 전달됩니다.

 

④ Controller는 비즈니스 로직을 처리한 후, 그 결과를 Model에 담습니다. 또한, 사용자에게 보여줄 뷰의 이름을 결정하여 반환합니다.

 

⑤ DispatcherServlet은 Controller로부터 받은 Model과 뷰 이름을 바탕으로 실제 뷰를 렌더링합니다. 이때, ViewResolver가 사용되며, 이는 뷰 이름을 기반으로 실제 View 객체를 찾아주는 역할을 합니다.

 

⑥ DispatcherServlet은 ViewResolver로부터 받은 View 객체에 Model 데이터를 전달하고, 뷰를 렌더링하도록 요청합니다.
선택된 View는 Model 데이터를 사용하여 사용자에게 보여줄 최종 HTML을 생성하고, 이를 HttpServletResponse 객체에 담습니다.

 

⑦ DispatcherServlet은 HttpServletResponse 객체에 담긴 최종 HTML을 사용자에게 응답으로 전달합니다.


이렇게 스프링 MVC는 사용자의 요청을 처리하고, 그 결과를 사용자에게 응답하는 과정을 효율적으로 관리합니다. 이를 통해 개발자는 비즈니스 로직에 집중할 수 있으며, 코드의 유지 보수성도 높아집니다.

 

 

 

 

출처

Devlog - https://asfirstalways.tistory.com/180

SeongWon Ohhttps://velog.io/@seongwon97/MVC-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80

위키백과 - https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC

Tech Interview  - https://gyoogle.dev/blog/web-knowledge/spring-knowledge/Spring%20MVC.html

langohttps://velog.io/@langoustine/%EC%97%AC%EA%B8%B0%EB%8F%84-MVC-%EC%A0%80%EA%B8%B0%EB%8F%84-MVC-MVC-%ED%8C%A8%ED%84%B4%EC%9D%B4-%EB%AD%90%EC%95%BC

728x90
반응형
LIST