웹 개발의 역사에 대해 알아보자.
HTTP 요청 메시지를 파싱하고 응답 메시지를 만들어주는 Servlet이 처음에 등장했다. 하지만 Servlet의 한계는 비즈니스 로직과 뷰를 혼재시키는 문제가 있다. 또한 HTML을 리턴하기 위해서 자바코드로 모든 HTML을 작성해야 했다. 이에 대한 해결책으로 JSP(JavaServer Pages)가 등장했다.
JSP는 HTML 내에 Java 코드를 삽입하여 동적 웹 페이지를 생성할 수 있게 했다. 그러나 JSP도 자바 코드와 HTML이 혼재, 즉 Servlet과 마찬가지로 비즈니스로직과 뷰가 혼재되어 유지보수가 어려웠다. JSP 파일 최상단에<%~~%> 로 자바코드의 비즈니스 로직을 삽입하고, 하단에 HTML과 자바코드를 부분부분 합쳐서, 동적으로 렌더링할 수 있었다. 이후 등장한 프레임워크들은 MVC 패턴을 기반으로 하여 이러한 문제를 해결하고 개발 생산성을 높였다.
이를 통해 화면을 담당하는 View, 데이터(Model)와 화면(View)연결을 담당하는 Controller, 그리고 데이터를 다루는 Model를 분리하여 개발하는 MVC 패턴이 개발되었다.
즉, Controller가 Servlet이고, View가 JSP역할을 한다.
Controller에서 비즈니스 로직을 수행하고 관련된 데이터를 Model에 담아, View에서 이를 활용할 수 있게끔 한다.
하지만, 여기서 Controller가 비즈니스 로직을 수행하기에는 너무 많은 역할을 담당해서 Service와 Repository 역할을 하는 클래스를 따로 두어 이를 실행하는 역할을 하는것 까지 담당하게 된다.