본문 바로가기
Spring/spring mvc

MVC프레임워크 -프론트 컨트롤러 도입 V1

by 킹차니 2021. 6. 25.
김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다.
https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C

 

 

프론트 컨트롤러 도입 - v1

프론트 컨트롤러를 단계적으로 도입해보겠습니다.


다형성을 활용하기 위해 기본적인 컨트롤러 구조 인터페이스를 만들고 

회원등록 화면 컨트롤러, 회원 등록 확인 컨트롤러, 회원 리스트 조회 컨트롤러가 컨트롤러 인터페이스들을 구현하도록 할 것입니다.

 

먼저 인터페이스 코드를 보겠습니다.

ControllerV1 (i)

위의 인터페이스를 구현한 3개의 controller를 보겠습니다.

 

1. 회원등록 화면 컨트롤러 (회원등록 페이지를 보여준다.)

MemberFormControllerV1

 

2. 회원 등록 확인 컨트롤러 (요청으로 들어온 회원 정보를 확인하고 저장한다.)

MemberSaveControllerV1

3. 회원 리스트 조회 컨트롤러 (저장된 회원들의 정보를 보여준다.)

MemberListControllerV1

 

마지막으로 FrontController

FrontController

다형성을 활용한 프톤트 컨트롤러입니다. 

/front-controller/v1 이하의 어떤 요청이 와도 요 서블릿(프론트 컨트롤러)를 거쳐야합니다.

map에 컨트롤러 구현체들을 담아두고, 

요청이 오면 getRequestURI()메서드로 파싱하여 일치하는 컨트롤러를 실행시키는 것입니다.

없는 요청이면 404에러를 띄웁니다.

 

 

 

 

프론트 컨트롤러 분석

 

1. urlPatterns

urlPatterns = "/front-controller/v1/*" : /front-controller/v1 를 포함한 하위 모든 요청은 이 서블릿에서 받아들입니다.
) /front-controller/v1 , /front-controller/v1/a , /front-controller/v1/a/b

 

2. controllerMap

key: 매핑 URL
value:
호출될 컨트롤러

 

3. service()

먼저 requestURI 를 조회해서 실제 호출할 컨트롤러를 controllerMap 에서 찾습니다. 만약 없다면 404(SC_NOT_FOUND) 상태 코드를 반환합니다.
컨트롤러를 찾고 controller.process(request, response); 을 호출해서 해당 컨트롤러를 실행합니다.

 

4. JSP

JSP는 이전 MVC에서 사용했던 것을 그대로 사용합니다.