티스토리 뷰

프론트 컨트롤러 패턴 (스프링 MVC의 DispatcherServlet)

- 기존에는 모든 컨트롤러에 공통로직이 중복되었다.

- 요청을 받으면 공통 로직을 프론트 컨트롤러가 처리한 뒤 요청에 맞는 컨트롤러를 호출한다.

- 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다.

스프링 MVC

 

1. 프론트 컨트롤러 도입

- FrontController에서 Request의 URL에 따라 Request를 처리할 컨트롤러를 찾는다. (controllerMap)

- 해당 컨트롤러를 호출한다.

 

 

2. 중복되는 뷰의 로직 분리하기

 

- View 객체를 만들어서 뷰를 렌더링하는 함수 생성

 

 

- 컨트롤러에서는 뷰 객체를 생성해서 반환하고 프론트 컨트롤러에서 뷰 객체를 받아 render함수를 호출하면 뷰를 렌더링할 수 있다.

 

 

3. 모델 추가하기 (서블릿 종속성을 제거하고, 뷰 이름 중복을 제거하기)

 

-기존에는 request와 response를 모두 Controller에 전달했지만, request와 response는 컨트롤러에서 필요없는 데이터가 있다. 컨트롤러에서 필요한 데이터만 담은 객체(paramMap)를 만들어 이를 전달한다. 그리고 Controller는 View에 전달할 데이터만 담아 Model 객체로 반환해준다.

 

 

- 뷰에서 받는 url 경로 중 중복되는 부분이 있다. 이를 사용해서 viewResolver를 만들면 중복을 제거할 수 있다.

 

 

4. 어댑터를 사용해서 확장성 있게 설계하기

 

- 요청 url을 처리할 Handler를(Controller) 찾는다.

- supports 메서드로 해당 Handler를 처리할 수 있는 HandlerAdapter를 찾는다.

- HandlerAdapter 실행

 


Reference

인프런 : 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (김영한)

'dev_note > Spring' 카테고리의 다른 글

스프링 MVC 구조 이해하기  (0) 2021.10.05
Servlet & JSP & MVC Pattern  (0) 2021.09.02
서블릿 Http Request & Http Response  (0) 2021.08.29
웹 애플리케이션 이해하기  (0) 2021.08.28
Spring AOP  (0) 2021.07.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함