입력, 작업, 출력 3개의 관심사(해야 할 작업)를 분리
[1.입력] --> [2.처리, 출력], [2.처리, 출력], [2.처리, 출력]
(입력, 처리, 출력에서 입력을 분리)
request객체로 매개변수를 받지 않고, 직접 값을 받을 수도 있다.
HttpServletRequest request을
--> String year, String month, String day
--> 또는 int year, int month, int day
(Spring이 자동 변환 함)
출력을 분리하면 변수를 사용할 수 없으므로 Model을 이용
1. 클라이언트에서 요청이 들어옴.
2. DispatcherServlet에서 입력을 처리, Model을 생성해서 Controller로 보냄.
3. Controller에서 처리 후 결과를 Model에 저장해서 입력(DispatcherServlet)으로 전달.
4. DispatcherServlet에서 View로 Model을 전달.
5. View에서 클라이언트로 응답을 보냄.
1. 클라이언트에서 요청이 들어옴.
2. DispatcherServlet에서 new Model();로 모델 생성해서 Controller로 전달.
3. Controller에서 매개변수로 Map의 형태인 Model을 받음.
4. 유효성 검사를 통과하면 처리 및 Model에 작업 결과를 저장.
5. 작업 결과를 보여줄 View의 이름을 String으로 DispatcherServlet에 반환.
6. DispatcherServlet에서 반환된 View의 이름을 찾아서 Model을 전달.
7. 해당 View에서 클라이언트로 응답을 보냄.