Spring/Spring MVC

프론트 컨트롤러 패턴

민철킹 2021. 4. 13. 21:01

  • 프론트 컨트롤러 패턴을 사용하지 않으면 공통 부분이 계속 중복되어 호출된다

 

프론트 컨트롤러를 도입하게 되면

  • 공통부분을 컨트롤러 앞에서 처리하고 각 컨트롤러로 들어가게 되는 것이다
  • 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음
  • 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출
  • 공통 처리 기능
  • 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨

 

스프링 웹 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