스프링 MVC의 뷰 리졸버에 대해 알아보자
스프링 부트는 InternalResourceViewResolver라는 뷰 리졸버를 자동으로 등록하는데 이때 application.properties에 등록한 spring.mvc.view.prefix, spring.mvc.view.sufix설정 정보를 사용해서 등록한다.
application.properties의 prefix, sufix를 설정하고 "new-form" string을 넘겨주면 이에 맞는 html이 클라이언트에게 전달된다.
ex)spring.mvc.view.prefix=/WEB-INF/views/, spring.mvc.view.suffix=.jsp
@Component("/springmvc/old-controller")
public class OldController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("OldController.handleRequest");
return new ModelAndView("new-form");
}
}
스프링 부트가 자동 등록하는 뷰 리졸버를 대략 알아보자 실제로는 더 많다
1 = BeanNameViewResolver : 빈 이름으로 뷰를 찾아서 반환한다. (예: 엑셀 파일 생성 기능에 사용)
2 = InternalResourceViewResolver : JSP를 처리할 수 있는 뷰를 반환한다.
처리 과정을 살펴보자
- 핸들러 어댑터 호출 : 핸들러 어댑터를 통해 new-form이라는 논리 뷰 이름을 획득한다.
- ViewResolver 호출
- new-form이라는 뷰 이름으로 viewResolver를 순서대로 호출한다.
- BeanNameViewResolver는 new-form이라는 이름의 스프링 빈으로 등록된 뷰를 찾아야 하는데 없다.
- InternalResourceViewResolver가 호출돼서 InternalResourceView를 반환한다.
- InternalResourceView는 JSP처럼 forward()를 호출해서 처리할 수 있는 경우에 사용한다.
- View.render()가 호출되고 InternalResourceView는 forward()를 사용해서 JSP를 실행한다.
출처 : 스프링MVC 1편 - 백엔드 웹 개발 핵심 기술 김영한
'스프링MVC' 카테고리의 다른 글
로깅 간단하게 알아보기 (0) | 2023.08.18 |
---|---|
스프링 MVC 시작하기 (0) | 2023.08.10 |
핸들러 매핑과 핸들러 어댑터 (0) | 2023.08.08 |
스프링 MVC 구조 이해 (0) | 2023.08.08 |
MVC 프레임워크 구현해 보기 (0) | 2023.08.07 |