컨트롤러: HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다.
모델: 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링 하는 일에 집중할 수 있다.
뷰: 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다. 여기서는 HTML을 생성하는 부분을 말한다

1) client의 request를 controller가 받음
2) request를 받은 controller는 비지니스 로직과 서비스를 처리하고 model에 담는다.
3) 처리결과를 받은 model을 가지고 view를 제어해 client에게 응답한다.

출처:https://steady-snail.tistory.com/66?category=788300
1) client의 요청
2) DispatcherServlet(Front Controller)가 servlet-context.xml 파일의 @Controller 인자를 통해 등록한 요청 위임
3) HandlerMapping에서 client의 요청 URL에 맞는 controller를 탐색 @RequestMapping을 통해 요청을 처리할 메소드로 이동
4) controller는 요청을 처리할 서비스를 service에게 넘김
5) service는 비즈니스 로직을 처리 후 DAO에게 넘김
6) DAO는 DB에서 가져온 정보를 service에게 넘김
7) service는 DAO에게 전달받은 정보를 Controller에 넘김
8) controller는 model객체를 view에 담아 DispatcherServlet에게 전달함
9) DispatcherServlet는 ViewResolver에게 전달받은 View정보를 전달
10) ViewResolver는 응답할 View에 대한 JSP를 찾아 DispatcherServlet에게 전달
11) DispatcherServlet는 응답할 뷰의 Render를 지시하고 뷰는 로직을 처리
12) DispatcherServlet는 클라이언트에게 Rendering된 뷰를 응답