> For the complete documentation index, see [llms.txt](https://dodeon.gitbook.io/study/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dodeon.gitbook.io/study/kimyounghan-spring-mvc/04-create-mvc-framework.md).

# MVC 프레임워크 만들기

![](/files/-MdK1SZuWmnyG6gcqxZ_)

프론트 컨트롤러 패턴을 도입하기 이전에는 공통 로직을 앞에 깔고 그 뒤에 별도의 컨트롤러를 깔았다. 특정 입구 없이 아무나 다 들어올 수 있기 때문에 공통 로직을 여러 군데에 만들어야 했다.

![](/files/-MdK1SZxZiu5ue8eKvnW)

도입 후에는 공통 로직을 한 쪽에 몰고 컨트롤러가 각자 로직을 처리한다.

## 특징

* 프론트 컨트롤러 서블릿을 하나 두고 여기서 클라이언트 요청을 모두 받는다.
* 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출한다.
* 입구를 하나로 두고 공통 로직을 처리할 수 있다.
* 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다.
  * 프론트 컨트롤러가 직접 필요한 것을 호출해줄 것이기 때문에 다른 데에서는 서블릿이 필요없다.

## 스프링 MVC와 프론트 컨트롤러

* 스프링 웹 MVC의 핵심도 프론트 컨트롤러에 있다.
* 스프링 MVC의 DispatcherServlet이 프론트 컨트롤러 패턴으로 구현되어 있다.
