하나의 프론트 컨트롤러를 만들어
공통된 기능을 프론트 컨트롤러가 처리하게 끔 한다.
스프링의 DispatcherServlet이 프론트 컨트롤러 패턴으로 구현되어있다.
컨트롤러에서 거의 모든 것을 처리한다.
별도의 뷰를 처리하는 객체 생성
모델을 추가하고 서블릿 종속성을 제거(HttpServletRequest 등)
뷰 이름 중복을 제거하고 뷰의 논리 이름을 반환
view.render(mv.getModel(), request, response)
실용성을 더한 버전이다.
유연성을 더한 버전으로 각 컨트롤러의 구조가 달라도 어댑터를 사용하여 컨트롤러를 사용할 수 있다.
boolean supports(Object handler)
ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
ModelView mv = adapter.handle(request, response, handler);
Object handler = getHandler(request)
private Object getHandler(HttpServletRequest request) {
String requestURI = request.getRequestURI();
return handlerMappingMap.get(requestURI);
}
실질적인 스프링의 MVC도 V5와 같은 구조를 가진다고 한다.
어댑터를 사용하여 여러 종류의 핸들러들을 사용할 수 있다는 것은 정말 유용한 것 같다.
🔖 학습내용 출처