스프링 MVC 1 - 프론트 컨트롤러 도입 - v1
프론트 컨트롤러 도입 - v1
프론트 컨트롤러를 단계적으로 도입해보자.
이번 목표는 기존 코드를 최대한 유지하면서, 프론트 컨트롤러를 도입하는 것이다.
먼저 구조를 맞추어 두고 점진적으로 리펙터링 해보자.
V1 구조
ControllerV1
서블릿과 비슷한 모양의 컨트롤러 인터페이스를 도입한다. 각 컨트롤러들은 이 인터페이스를 구현하면 된다.
프론트 컨트롤러는 이 인터페이스를 호출해서 구현과 관계없이 로직의 일관성을 가져갈 수 있다.
이제 이 인터페이스를 구현한 컨트롤러를 만들어보자. 지금 단계에서는 기존 로직을 최대한 유지하는게 핵심이다.
MemberFormControllerV1 - 회원 등록 컨트롤러
MemberSaveControllerV1 - 회원 저장 컨트롤러
MemberListControllerV1 - 회원 목록 컨트롤러
내부 로직은 기존 서블릿과 거의 같다.
이제 프론트 컨트롤러를 만들어보자.
FrontControllerServletV1 - 프론트 컨트롤러
프론트 컨트롤러 분석
urlPatterns
- urlPatterns = "/front-controller/v1/*": /front-controller/v1 를 포함한 하위 모든 요청은
이 서블릿에서 받아들인다. - 예) /front-controller/v1, /front-controller/v1/a, /front-controller/v1/a/b
controllerMap
- key: 매핑 URL
- value: 호출될 컨트롤러
service()
먼저 requestURI를 조회해서 실제 호출할 컨트롤러를 controllerMap에서 찾는다.
만약 없다면 404(SC_NOT_FOUND) 상태 코드를 반환한다.
컨트롤러를 찾고 controller.process(request, response);을 호출해서 해당 컨트롤러를 실행한다.
JSP
JSP는 이전에 MVC에서 사용했던 것을 그대로 사용한다.
실행
- 등록: http://localhost:8080/front-controller/v1/members/new-form
- 목록: http://localhost:8080/front-controller/v1/members
기존 서블릿, JSP로 만든 MVC와 동일하게 실행 되는 것을 확인할 수 있다.
'Spring' 카테고리의 다른 글
스프링 MVC 1 - Model 추가 - v3 (0) | 2022.07.06 |
---|---|
스프링 MVC 1 - View 분리 - v2 (0) | 2022.07.06 |
스프링 MVC 1 - 프론트 컨트롤러 패턴 소개 (0) | 2022.07.05 |
스프링 MVC 1 - 정리(서블릿, JSP, MVC 패턴) (0) | 2022.07.05 |
스프링 MVC 1 - MVC 패턴 - 한계 (0) | 2022.07.05 |
댓글
이 글 공유하기
다른 글
-
스프링 MVC 1 - Model 추가 - v3
스프링 MVC 1 - Model 추가 - v3
2022.07.06 -
스프링 MVC 1 - View 분리 - v2
스프링 MVC 1 - View 분리 - v2
2022.07.06 -
스프링 MVC 1 - 프론트 컨트롤러 패턴 소개
스프링 MVC 1 - 프론트 컨트롤러 패턴 소개
2022.07.05 -
스프링 MVC 1 - 정리(서블릿, JSP, MVC 패턴)
스프링 MVC 1 - 정리(서블릿, JSP, MVC 패턴)
2022.07.05