과거에 서블릿으로 개발할 때는 뷰 화면을 위한 HTML 코드와 자바코드가 섞여 가독성이 떨어지고 작업 효율이 좋지 않았다.
-> JSP의 등장으로 뷰 작업을 위한 HTML과 동적 컨텐츠를 제공하는 자바 코드가 어느정도 분리가 되었다.
-> 하지만 여전히 비지니스 로직을 위한 자바 코드가 JSP에 노출이 되고 완벽한 분리가 되지않으며, 한 파일 내에 자바코드와 HTML 코드가 섞여있다.
하나의 서블릿이나 JSP만으로 처리했던 비지니르 로직과 뷰를 Model View Controller로 기능적으로 분리하여 유지보수에 대한 편의성을 증대시킨다.
모델 : 뷰에 출력할 데이터를 모아둔 곳. 컨트롤러는 이 모델에 출력할 값들을 담아두고, 뷰는 모델에서 데이터를 참조하여 적절한 화면을 만들어낸다.
컨트롤러 : Http 요청에 대해 검증하고 적절한 비지니스 로직을 실행하는 곳. 그 결과를 모델에 담아둔다.
뷰 : 모델에 담겨져있는 데이터를 가져와서 적절한 화면을 만들어낸다.