뷰 리졸버
스프링 부트가 자동 등록하는 뷰 리졸버
1 = BeanNameViewResolver : 빈 이름으로 뷰를 찾아서 반환한다. (예: 엑셀 파일 생성 기능에 사용) 2 = InternalResourceViewResolver : JSP를 처리할 수 있는 뷰를 반환한다.⭐️ 현재 진행하는 프로젝트들 => 빈 이름으로 찾는 게 아니라 InternalResourceViewResolver로 뷰 리졸버를 찾고, 이것은 JSP를 처리할 수 있는 뷰를 반환한다!
package hello.servlet.web.springmvc.old;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//스프링 빈 이름을 url로 맞춤.
@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");
}
}
resources>application.properties에 다음과 같은 prefix와 suffix를 추가한다.
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
핸들러 어댑터 호출 핸들러 어댑터를 통해 new-form 이라는 논리 뷰 이름을 획득한다.
ViewResolver 호출 new-form이라는 뷰 이름으로 viewResolver를 순서대로 호출한다. BeanNameViewResolver 는 new-form 이라는 이름의 스프링 빈으로 등록된 뷰를 찾아야 하는데 없기 때문에 InternalResourceViewResolver 가 호출된다.
InternalResourceViewResolver : InternalResourceView ⭐️를 반환한다.
InternalResourceView : JSP처럼 포워드 forward() 를 호출해서 처리할 수 있는 경우에 사용한다.
view.render() 가 호출되고, InternalResourceView 는 forward() 를 사용해서 JSP를 실행한다.

Last updated
Was this helpful?