
Model-View-Controller의 약자로 개발 시 3가지 형태로 나누어 개발하는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있다. Model은 애플리케이션의 정보, 즉 데이터를 나타내고, View는 사용자 인터페이스 요소, Controller는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.
소수의 뛰어난 엔지니어가 해결한 문제를 다수의 엔지니어들이 처리 할 수 있도록 한 규칙이면서, 구현자들 간의 커뮤니케이션의 효율성을 높이는 기법을 개발해 내려온 전설같은 디자인 패턴이다. 엄밀히 말하자면 문제점을 분리할 수 있다는 것이다. 문제점을 분리하니까, 각자의 위치에서 소스를 수정하고, 재사용 할 수 있다고 말할 수 있다. 백엔드와 프론트엔드를 쉽게 분리할 수 있다는 것도 큰 장점이다.

백그라운드에서 동작하는 로직을 처리한다.
사용자가 보게 될 결과 화면을 출력한다.
사용자의 입력처리와 흐름 제어를 담당한다. 사용자가 접근한 URL에 따라서 사용자의 요청사항을 파악한 후, 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다.
컨트롤러 역할을 하는 서블릿에서 클라이언트의 각 요청을 받아서 처리한 후 최종적으로 뷰 페이지로 포워딩 처리할 때 사용되는 방식

response.sendRedirect("보내줄경로");

RequestDispatcher dispatcher = request.getRequestDispatcher("보내줄경로");
dispather.forward(requset, response);
