- 프론트 컨트롤러 패턴을 사용하지 않으면 공통 부분이 계속 중복되어 호출된다
프론트 컨트롤러를 도입하게 되면
- 공통부분을 컨트롤러 앞에서 처리하고 각 컨트롤러로 들어가게 되는 것이다
- 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음
- 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출
- 공통 처리 기능
- 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨
스프링 웹 MVC의 핵심이 바로 FrontController
스프링 웹 MVC의 DispatcherServlet이 FrontController 패턴으로 구현되어 있음
FrontController 도입
컨트롤러 인터페이스를 만들고, 각 컨트롤러들이 이를 구현하도록 만들겠다.
컨트롤러 인터페이스
- 서블릿과 동일한 구조를 가지고 있음.
- 이를 구현한 회원폼 컨트롤러, 회원 저장 컨트롤러, 회원 목록 컨트롤러를 구현
FrontController
- /front-controller/v1/~~~ 해당 경로로 접속하는 모든 요청이 여기로 들어오게된다.
- HashMap만들어진 controllerMap에 미리 만든 컨트롤러 3개와 각각의 url을 담아둔다
- 그 후 service에서 Map에서 어떤 컨트롤러가 요청되었는지 찾아서 각각의 요청을 해당 컨트롤러로 보내주는 것이다.
- getRequestURL 메서드를 통해 요청이 들어온 주소를 가지고 map에서 컨트롤러를 찾아서 호출해줌
- 없으면 404(NOT FOUND)
- 컨트롤러를 잘 호출하는 것을 확인할 수 있음
- son / 25 전송
다형성을 이용하여 인터페이스로 객체를 반환받기 때문에(Map에서 get한 결과로) 위와 같은 코드를 사용할 수 있게 되는 것이다. ==> 구현체와 관계없이 로직의 일관성을 유지
ControllerV1 controller = new MemberListControllerV1()
반응형
'Spring > Spring MVC' 카테고리의 다른 글
Model 추가 (0) | 2021.04.18 |
---|---|
View 분리 (0) | 2021.04.14 |
MVC Pattern (0) | 2021.04.10 |
JSP로 회원 관리 웹 애플리케이션 만들기 (0) | 2021.04.09 |
서블릿으로 회원 관리 웹 애플리케이션 만들기 (0) | 2021.04.06 |