View Resolver
개발/SPRING 2008. 9. 4. 16:10 |View Resolver
핸들러(controller)는 요청을 처리 한 뒤 ModelAndView 객체를 넘겨준다. 이 때 이 객체에 view의 이름을 같이 넘겨 주는데 이 이름으로 실제 view를 찾아 주는 역할을 하는 것이 View Resolver이다.
Spring이 제공하는 View Resolver들은 다음과 같다.
ViewResolver | 설명 |
AbstractCachingViewResolver | View 들을 cashing하는 기능 제공 |
XmlViewResolver | ViewResolver 의 구현체로 XML파일 사용(/WEB-INF/views.xml 을 기본 설정파일로 사용) |
ResourceBundleViewResolver | ViewResolver 의 구현체로 리소스 파일 사용(views.properties 를 기본 리소스 파일로 사용) |
UrlBasedViewResolver | ViewResolver 의 구현체로 특별한 맵핑 정보 없이 의미상 view 이름을 URL로 사용(View 이름과 실제 view 자원과의 이름이 같을 때 사용) |
InternalResourceViewResolver | UrlBasedViewResolver 를 상속 받았으며 InternalResourceView(Servlet, JSP)를 사용 |
VelocityViewResolver/FreeMarkerViewResolver | UrlBasedViewResolver 를 상속 받았으며 VelocityView 와 FreeMarkerView를 사용 |
사용하려는 기술에 따라 위와같은 View Resolver를 적절히 선택하여야한다.
-
JSP 사용
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
viewResolver는 action 요청 처리 후 사용자에게 보여줄 view를 찾는 역할을 하고 prefix와 suffix를 지정해 줄수 있다. 만약 controller에서 넘겨준 modelAndView 값이 index이고 prefix를 "/jsp/", suffix를 ".jsp"라고 정의 했다면 이 viewResolver는 "/jsp/index.jsp"를 찾게 된다. 이러한 viewResolver 정보를 변경함으로써 Velocity, Excel, PDF등을 View로 이용하는 것이 가능하다. -
JSTL 사용
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
만약 JSTL 태그를 사용한다면 viewClass 특성을 설정함으로써 InternalResourceView를 JstlView로 대체해야 한다. JstlView도 요청을 JSP에 전달한다.