Spring이 제공하는 ViewResolver들은 다음과 같습니다.

ViewResolver

Description

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 기술에 따라 적절한 ViewResolver를 선택해야겠습니다.
JSP를 사용하려면 UrlBasefViewResolver를 사용해도 되고 그 하위에 있는 InternalResourceVIewResolver를 사용할 수 있겠습니다. 하지만 JSTL을 사용하려면 InternalResourceVIewResolver를 사용해야겠네요. :)

JSP 사용할 때

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

JSP를 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>

여러 view 기술들을 사용할 때

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <property name="basename" value="views"/>
    <property name="defaultParentView" value="parentView"/>
</bean>

basename에 설정한 값의 ResourceBundle을 찾아서 각각의 view를 [viewname].class 는 뷰 기술, [viewname].url 은 실제 뷰 URL로 정의 해둔 프로퍼티 파일을 사용하여 찾아 줍니다.

ViewResolver들의 상위에 있는 AbstractCachingViewResolver 이 클레스가 캐슁 기능을 제공하기 때문에 이 클레스의 하위 클레스들은 엄청난 성능 향상을 맛볼 수 있습니다.
캐슁 기능을 끄고 싶을 때는 cache 속성을 false로 하면 됩니다.
런타임시 특정 view를 다시 읽어야 한다면 removeFromCache(String viewName, Locale loc) 메소드를 사용할 수 있습니다.
사용자 삽입 이미지