hayu's 개발 일지

[TIL]240304 스프링 MVC 와 Front Controller 본문

프레임워크/spring

[TIL]240304 스프링 MVC 와 Front Controller

hayu00 2024. 3. 4. 21:46

스프링 MVC란?

- MVC 패턴 등장 전, 하나의 파일로 코드를 짤 경우 하나의 파일이 너무 많은 역할을 하게 되고 로직 변경 사항이 있는 경우 파일을 모두 수정해야 했다. 

 

- MVC 패턴은 애플리케이션을 개발할 때 사용하는 디자인 패턴으로 Model-View-Controller의 약자이다. MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리한다.

 

 Model

- 데이터와 비즈니스 로직을 담당한다. 

-> 클라이언트의 요청을 전달 받으면 요청 사항을 처리하기 위한 작업을 한다. 처리한 작업의 결과 데이터를 클라이언트에게 응답을 돌려줘야 하는데 클라이언트에게 응답으로 돌려주는 작업 처리 결과 데이터를 말한다.  

- 데이터베이스와 연동하여 데이터를 저장하고 불러오는 작업을 수행한다.

 

View

- 사용자 인터페이스를 담당한다.

- 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현한다. 

- Model 이나 Controller 에 대한 정보를 단순히 표시해주는 역할을 가진다.

 

Controller

- Model 과 View 사이의 상호작용을 조정하고 제어한다. 

-> 클라이언트의 요청을 직접적을 받는 지점으로 Model 과 View 의 중간의서 상호작용을 해준다. 사용자의 입력을 받아 Model 에 전달하고, 그 결과를 바탕으로 View 를 업데이트한다.  

 

MVC 패턴의 장점

- 소프트웨어를 구성하는 요소들을 분리함으로써 코드의 재사용성과 유지보수성을 높인다.

- 개발자들간의 협업을 용이하게 한다.

 

Spring MVC 란?

- Servlet API 를 기반으로 구축된 독창적인 웹 프레임워크이다. 

+ Servlet(서블릿): 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말한다.

- Spring 에서 MVC 디자인 패턴을 적용하여 HTTP 요청을 효율적으로 처리한다. 

 

Front Controller 이란?

- Spring 이 API 요청을 효율적으로 처리하기 위한 DispatcherServlet 을 사용하는 패턴방식이다.

- 중간에 공통로직을 만들어 하나의 서블릿만으로 공통로직을 사용하는 패턴이다.

- 공통 로직을 매번 작성하지 않아도 되기 때문에 핵심 로직에 집중할 수 있다.

 

 

Front Controller

1. Client(브라우저)에서 HTTP 요청이 들어오면 DispatcherServlet 객체가 요청을 분석합니다.

2. DispatcherServlet 객체는 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달해 줍니다.

3. ControllerDispathcerServlet

-> 해당 Controller는 요청에 대한 처리를 완료 후 처리에 대한 결과 즉, 데이터('Model')와 'View' 정보를 전달합니다.

4. DispatcherServletClient

-> ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 응답으로 전달합니다.