sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | http://1 |
extra_vars6 | ko |
jpetstore 예제를 통한 InternalResourceViewResolver 설정하기
jpetstore 에서 InternalResourceViewResolver 클래스를 사용하여 WebApplicationContext에 선언하는 것은 이전에 살펴본 다음 그림 “Spring MVC 에서 HTTP Request 처리 과정”의 5, 6번째에 해당하는 View/ViewResolver 를 결정하는 부분이다.
Spring MVC에서 모든 Controller들은 ModelAndView 인스턴스를 반환한다. ModelAndView 클래스에 정의되어 있는 View 정보가 논리적인 View 이름일 경우(jpetstore에서 뿐만 아니라 대부분 논리적인 View 이름을 사용할 것을 권장한다), 빈 설정 파일에 정의되어 있는 ViewResolver 클래스를 이용하여 클라이언트에게 출력할 View 객체를 얻게된다. ModelAndView 클래스에 정의되어 있는 View 정보가 View 객체를 통하여 Controller에서 반환되었다면 DispatcherServlet은 View 객체를 이용하여 클라이언트에 화면을 출력하게 된다.
그러면, jpetstore에서 InternalResourceViewResolver 를 WebApplicationContext에 설정한 부분을 살펴보자. WEB-INF/petstore-servlet.xml 파일에 해당하는 부분이 존재한다.
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsp/spring/"/> <property name="suffix" value=".jsp"/> </bean>
InternalResourceViewResolver 클래스는 UrlBasedViewResolver를 상속받아 구현한 클래스이다. 실제로 하는 일은 View 클래스를 결정하는 일인데, Controller에서 논리적인 View 임으로 생성된 이름과 일치하는 클래스 형태로 생성하게 된다. 위의 설정된 값을 예로 들면, 만약 Controller에서 “Cateory”라는 논리적인 이름으로 ModelAndView 가 전달(리턴)된다면 prefix 설정에 의해서 “WEB-INF/jsp/spring” 디렉토리, suffix 설정에 의해서 Category.jsp 라는 형태로 View가 결정되는 것이다.
이러한 구조는 Spring MVC에서 URL Mapping을 위한 설정에서 Controller를 통해 얻어진 논리적인 View 이름으로 Presentation Layer를 담당할 View 클래스를 결정하는 것이다.
실제 Spring MVC를 이용한 소스 코드를 보면서 이러한 매커니즘을 이해할 필요가 있는데, 이는 다음 절에서 예제를 통해서 살펴보도록 하겠다.