본문 바로가기

Tech/Spring

[Spring] ViewResolver

 

뷰리졸버는 ViewResolver 인터페이스를 구현해서 만들어짐
따로 뷰리졸버를 Bean으로 등록하지 않는다면 DispatcherServlet의 기본 뷰리졸버인 InternalResourceViewResolver를 사용

1. UrlBasedViewResolver

  • 논리적인 view 이름 : 실제 view 객체 이름이 같을 때 사용하는 뷰리졸버

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">

<property name="prefix" value="/WEB-INF/index/" />

    <property name="suffix" value=".jsp" />

</bean>

위의 설정과 Controller 메서드에서 index 뷰 이름을 String 타입으로 리턴하면 prefix, suffix가 적용되어
/WEB-INF/index/index.jsp의 경로의 view를 사용하게 됨

2. InternalResourceViewResolver

  • InternalResourceViewResolver는 뷰리졸버를 지정하지 않았을때 자동등록 되는 기본 뷰리졸버
  • UrlBasedViewResolver를 상속
  • 디폴트 상태의 InternalResourceViewResolver를 사용할 경우 view 전체경로를 명시해줘야 함
  • 따라서 prefix, suffix는 명시해주는게 좋음
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    <property name="prefix" value="/WEB-INF/index/" />

    <property name="suffix" value=".jsp" />

</bean>

3. XmlViewResolver

  • XmlViewResolver는 view 이름과 동일한 이름을 갖는 Bean을 view 객체로 사용함
  • 별도의 xml 설정파일로부터 빈 객체를 검색
<bean class="org.springframework.web.servlet.view.XmlViewResolver">

    <property name="location">

        <value>/WEB-INF/spring-views.xml</value>

    </property>

    <property name="order" value="0" />

</bean>

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver" >

    <property name="prefix">

        <value>/WEB-INF/pages/</value>

    </property>

    <property name="suffix">

        <value>.jsp</value>

    </property>

    <property name="order" value="1" />

</bean>

4. ResourceBundleViewResolver

  • ResourceBundleViewResolver는 리소스 번들(프로퍼티 파일)로 view 이름과 매핑되는 view Class를 얻음
  • beanname 프로퍼티에 리소스 번들 파일명을 지정한다
<bean class="org.springframework.web.servlet.view.XmlViewResolverorg.springframework.web.servlet.view.ResourceBundleViewResolver">

    <property name="basename" value="spring-views" />

    <property name="order" value="0" />

</bean>

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver" >

    <property name="prefix">

        <value>/WEB-INF/pages/</value>

    </property>

    <property name="suffix">

        <value>.jsp</value>

    </property>

    <property name="order" value="1" />

</bean>

5. BeanNameViewResolver

  • 주로 커스텀 view로 사용하며 컨트롤러에서 리턴 받은 view의 이름과 Bean에 등록되어 있는 id 값이 같은것을 찾아 실행시킴
<bean id="download" class="com.imoxion.sensmail.web.common.DownloadView"/>

<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">

    <property name="order" value="0" />

</bean>
@RequestMapping("/file/donwload") 
public String downloadFile() { 
    ... 
    return "download"; 
}

컨트롤러에서 리턴한 download를 빈 객체에서 찾아 클래스를 실행시킴

 

'Tech > Spring' 카테고리의 다른 글

[Spring] ViewResolver  (0) 2019.04.14
[Spring] Controller Retrun Type 종류  (0) 2019.04.14
[Spring] Controller  (0) 2019.04.14
[Spring] HandlerMapping  (0) 2019.04.14