아래와 같은 구조, 9시 방향부터 6시 방향까지 시계 방향으로 진행된다.
1. client 요청이 DispatcherServlet에게 전달된다.
2. DispatcherServlet은 HandlerMapping을 사용해서 client요청을 처리할 Controller 객체를 추출한다.
3. Controller에서 model을 사용하여 client의 요청을 처리한다.
4. Controller는 처리결과 data를 Model(AndView)에 담아서 return한다.
5. DispatcherServlet은 ViewResolver로부터 응답결과를 생성할 view 객체를 추출한다.
6. View는 client에게 전송할 응답이다.
Dispatcher Servlet
Dispatcher Servlet = Controller라고 생각하면됨.
Controller의 역할(Action 즉 backend controller의 역할)을 Dispatcher Servlet이 하는 것이다.
- Servlet class이며, 모든 client의 요청을 처리한다.
- Controller(Action)에게 client의 요청을 전달하고, Controller가 리턴한
결과값을 View에 전달하여 알맞은 응답을 생성하도록 한다.
HandlerMapping
Client의 요청 URL(또는 URI)을 어떤 Controller(Action)가 처리할지는 결정한다.
(요청 URL과 Controller 클래스의 mapping을 관리한다. (이전 Dynamic Web Project 실습에서 config.properties 파일을 통해 command = 처리(.do = Action(클래스) or .do = action(메소드))가 define된대로 client 요청과 처리 action이 연결되었던것과 같음)
클래스들을, 또는 클래스내의 메소드들을 mapping할 수 있다.
Controller(Action)
controller의 back-end 부분. 비즈니스 로직이 들어감.
클라이언트의 실질적인 요청을 처리한다. Model(DAO, DTO, etc) 처리 결과를 Model결과에 담아서 DispatcherServlet에 반환 (Model 또는 ModelandView에 처리한 결과를 저장한다.)
- Model And View
Controller(Action)가 모델의 처리한 결과 정보를 view에 담는다
ViewResolver
ViewResolver는 Spring이 제공해준다. ViewResolver는 view를 찾는 객체이다.
여러 view를 선택 할 수 있도록해준다. (e.g., template이 있다면, template을 사용)
view 종류별로 ViewResolver가 필요하다. 각 ViewResolver가 각 view를 처리한다.
- Controller(Action)의 처리 결과를 생성할 뷰를 결정한다.
- Controller가 리턴한 View이름으로 실행될 JSP경로 완성
View
Controller(Action)의 처리 결과 화면을 생성, 출력데이터를 설정
파란색 : Spring framework 에서 기본적으로 제공
보라색 : 개발자가 만들어야 하는 것
초록색 : Spring framework 에서 제공하지만 개발자가 수정 가능한 것