스프링MVC

뷰 리졸버

salmon16 2023. 8. 8. 22:16

스프링 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를 처리할 수 있는 뷰를 반환한다.

 

처리 과정을 살펴보자

  1. 핸들러 어댑터 호출 : 핸들러 어댑터를 통해 new-form이라는 논리 뷰 이름을 획득한다.
  2. ViewResolver 호출 
    1. new-form이라는 뷰 이름으로 viewResolver를 순서대로 호출한다.
    2. BeanNameViewResolver는 new-form이라는 이름의 스프링 빈으로 등록된 뷰를 찾아야 하는데 없다.
    3. InternalResourceViewResolver가 호출돼서 InternalResourceView를 반환한다.
  3. InternalResourceView는 JSP처럼 forward()를 호출해서 처리할 수 있는 경우에 사용한다.
  4. 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