🔸 하나의 서블릿, JSP에서 비지니스 로직과 뷰 렌더링 모두를 처리하게 되면 너무 많은 역할을 하게 되고 유지보수가 여려워진다.
🔸 가장 큰 문제는 둘 사이의 '변경의 라이프 사이클'이 다르다.
(예_ UI를 수정하는 일과 비지니스 로직을 수정하는 일은 다르게 발생할 확률이 높고 서로 영향을 주지 않는다.)➡️ JSP와 같은 뷰 템플릿은 뷰 렌더링에 최적화 되어 있으므로 이 업무만 담당하게 하는 것이 가장 적절하다.
🔸 하나의 서블릿이나 JSP로 작업하던 것을 컨트롤러, 뷰라는 영역으로 역할을 나눈 것을 MVC패이라고 한다.
🔸 컨트롤러 : HTTP 요청을 받아서 파라미터를 검증하고, 비지니스 로직을 실행, 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다.(서블릿)
🔸 모델 : 뷰에 출력할 데이터를 담아둔다.
🔸 뷰 : 모델에 담겨있는 데이터를 이용하여 화면을 렌더링한다.(jsp)
🔷 중복과 사용하지 않는 코드들..
String viewPath = "/WEB-INF/views/save-result.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response);
🔸 view로 이동하는 코드와 viewPath가 중복 호출된다.
HttpServletRequest request, HttpServletResponse response는 사용하지 않지만 코드를 작성해야 할 때가 있다.(특히 response.)
🔷복잡해 질수록 컨트롤러에서 공통으로 처리해야 하는 부분이 점점 더 많아진다. 공통부분을 메서드로 뽑아내지만, 결국에는 그 해당 메서드를 호출해야 한다.
➡️ 수문장 역할을 하는 프론트 컨트롤러 패턴(공통 기능을 처리 후 컨트롤러를 호출해주는)을 이용해서 해결할 수 있다.