Front-Controller pattern
Front-Controller 경로
Handler Mapping
Request ① ②↕ ③ ④
↔ DispatcherServlet ↔ HandlerAdapter ↔ Controller
Response ⑧ ⑥↕ ↕⑤
View ViewResolver
⑦↕
HTML, JSP 등
1(①) : 사용자의 Request는 Front-Controller인 DispatcherServlet을 통해 처리된다.
2(②, ③) : HandlerMapping은 Request의 처리를 담당하는 컨트롤러를 찾기 위해서 존재한다.
여러 객체 중 @RequestMapping 어노테이션이 적용된 것을 기준으로 판단하며,
적절한 컨트롤러가 찾아졌다면 HandlerAdapter를 이요해서 해당 컨트롤러를 동작시킨다.
3(④, ⑤) : Controller는 Request를 처리하는 비지니스 로직을 작성하며,
View에 전달해야 하는 데이터를 RequestScope에 담아서 전달한다.
응답페이지에 대한 경로 처리는 ViewResolver를 이요하게 된다.
4(⑤) : ViewResolver는 Controller가 리턴한 결과 값을 전체 경로로 완성시켜준다.
5(⑥, ⑦) : View는 실제 응답을 보내야하는 데이터를 HTML, JSP 등을 이용해서 생성하는 역할을 한다.
6(⑧) : 만들어진 응답 페이지를 DispatcherServlet을 통해 전송한다.
Front-Controller의 특징
- HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 기능 구현
- 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능
- GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 처리 가능
- 상속/인터페이스 방식 대신 어노테이션만으로도 설정 가능