뷰 리졸버

wangjh789·2022년 8월 2일
0

[Spring] 스프링-mvc-1

목록 보기
9/15

구시대의 컨트롤러

@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");
    }
}

위의 컨트롤러는 빈의 이름과 요청 url이 일치해야 하는 컨트롤러로 BeanNameUrlHandlerMapping 에서 핸들러로 반환된다.그 후 이를 처리할 수 있는 SimpleControllerHandlerAdapter 가 핸들러 어뎁터로써 반환되고 수행된다.

InternalResourceViewResovler

version3 처럼 리턴값으로 ModelAndView를 지정하고, 아래 옵션을 설정하면 뷰리졸버가 작동한다.이는 InternalResourceViewResovler 라는 자동으로 등록된 뷰 리졸버가 처리한다.

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

application.properties에서 설정해하면 스프링부트가 아래처럼 코드를 생성한다.

@Bean
	InternalResourceViewResolver internalResourceViewResolver() {
		return new InternalResourceViewResolver("/WEB-INF/views",".jsp");
	}

InternalResourceViewResovler는 InternalResourceView를 반환한다.
InternalResourceView는 forward() 기능을 가지고 있고, 이를 사용해 JSP를 실행한다.
(JSTL을 사용하면 JstlView를 반환한다.)
(타임리프를 사용하기 위해선 타임리프뷰 리졸버를 등록해야 하고, 따로 forward()를 호출하지 않고 렌더링 된다.)

profile
기록

0개의 댓글