김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다.
https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C
프론트 컨트롤러 도입 - v1
프론트 컨트롤러를 단계적으로 도입해보겠습니다.
다형성을 활용하기 위해 기본적인 컨트롤러 구조 인터페이스를 만들고
회원등록 화면 컨트롤러, 회원 등록 확인 컨트롤러, 회원 리스트 조회 컨트롤러가 컨트롤러 인터페이스들을 구현하도록 할 것입니다.
먼저 인터페이스 코드를 보겠습니다.
위의 인터페이스를 구현한 3개의 controller를 보겠습니다.
1. 회원등록 화면 컨트롤러 (회원등록 페이지를 보여준다.)
2. 회원 등록 확인 컨트롤러 (요청으로 들어온 회원 정보를 확인하고 저장한다.)
3. 회원 리스트 조회 컨트롤러 (저장된 회원들의 정보를 보여준다.)
마지막으로 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에서 사용했던 것을 그대로 사용합니다.
'Spring > spring mvc' 카테고리의 다른 글
MVC프레임워크 어댑터패턴 적용하기 (0) | 2021.06.27 |
---|---|
MVC프레임워크 -프론트 컨트롤러 도입 V3 (0) | 2021.06.26 |
MVC프레임워크 -프론트 컨트롤러란? (0) | 2021.06.25 |
MVC패턴 적용과 그 한계 (0) | 2021.06.25 |
MVC패턴이란 (0) | 2021.06.25 |