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에 전달한다.

Posted by 무리미
: