본문 바로가기

새롭게 쌓은 지식

Spring MVC에서 요청에 따른 핸들러매핑 과정

Spring MVC 동작 순서

1. 핸들러 조회 : 핸들러 매핑을 통해 URL에 매핑된 핸들러 조회

2. 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터 조회

3. 핸들러 어댑터 실행 : 핸들러 어댑터 실행

4. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행

5. ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해 반환

6. ViewResolver 호출 : 뷰 리졸버를 찾아 실행한다. : JSP의 경우 InternalResourceViewResolver 가 자동으로 등록되어 사용된다.

7. View 반환 : 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고 랜더링 역할을 담당하는 뷰 객체를 반환한다.

8. 뷰 랜더링 : 뷰를 통해서 뷰를 랜더링한다.

 

 

 

주요 인터페이스 목록

 

- 핸들러 매핑 : org.springframework.web.servlet.HandlerMapping

- 핸들러 어댑터: org.springframework.web.servlet.HandlerAdapter

- 뷰 리졸버: org.springframework.web.servlet.ViewResolver

- 뷰 : org.springframework.web.servlet.View

 

 

 

 

 

 

어떻게 요청의 URL을 통해 핸들러를 매핑해 줄까?

 

- HandlerMapping : 

0 = RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @Requestmapping에서 사용한다. 

1 = BeanNameUrlHandlerMapping    : 스프링 빈의 이름으로 핸들러를 찾는다.

 

- HandlerAdapter : 

0 = RequestmappingHandlerAdapter  : 애노테이션 기반의 컨트롤러인 @Requestmapping에서 사용한다. 
1 = HttpRequestHandlerAdapter     : HttpRequesthandler 처리
2 = SimpleControllerHandlerAdapter: Controller 인터페이스(애노테이션 X) 처리 

 

 

해당 숫자는 우선순위이다. HandlerMapping, HandlerAdapter 모두 순서대로 찾고 만약 없을 경우 다음 순서로 넘어간다.

 

1. HandlerMapping으로 Handler 조회

2. HandlerAdapter 조회

3. HandlerAdapter 실행

 

 

 

 

 

ViewResolver 동작방식


스프링부트가 자동 등록하는 ViewResolver 중 일부이다.

 

1 = BeanNameViewResolver         : 빈 이름으로 뷰를 찾아 반환한다. 
2 = InternalResourceViewResolver : JSP를 처리할 수 있는 뷰를 반환한다.

 

 

HandlerAdapter가 Handler에게 반환 받은 ModelAndView 중 논리 Viewname을 통해 실제 View를 매핑해주자.

 

1. handlerAdapter 호출 : HandlerAdapter을 통해 논리 Viewname을 획득한다.

2. ViewResolver 호출

: 논리 Viewname으로 ViewResolver를 순서대로 호출한다.

3. ViewResolver를 통해 View를 만들어 반환한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

꾸준히 다시보자.

 

1. 220930

2. 221002

3. 221017

4. 221103

Recent Posts
Popular Posts
Recent Comments