본문 바로가기

Spring

Spring(9) - View구현

컨트롤러가 지정한 뷰이름으로부터 응답결과를 출력해주는 View객체를 구할 때 사용하는 것이 ViewResolver이다.
스프링이 제공하는 주요 ViewResolver는 InternalResourceViewResolver, BeanNameViewResolver가 있다.

InternalResourceViewResolver

- InternalResourceViewResolver는 JSP나 HTML과 같이 웹 어플리케이션의 내부 자원을 이용해서 응답 결과를 생성한다. JSTL이 존재할 경우 하위타입으로 JstlView객체를 리턴한다. 설정방법은 다음과 같다.


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

BeanNameViewResolver

- BeanNameViewResolver 클래스는 뷰이름과 동일한 이름을 갖는 빈을 뷰로 사용한다. 주로 커스텀 View 클래스를 뷰로 사용해야할 때 이용되는데 예를들어, 파일 다운로드를위한 정보를 클래스에 전달해야 할 때 사용된다.


@Controller
public class downloadClass{
	public ModelAndView download(MultipartHttpServletRequest request, HttpServletResponse response){
    	File downloadFile = request.getFile("file");
        return new ModelAndView("download", "downloadFile", downloadFile);
    }
}
<bean id = "viewResolver" class = "org.springframework.web.servlet.view.BeanNameViewResolver"/>
<bean id = "download" class = "my.com.download.DownloadView"/>

이런식으로 사용을하면 DownloadView클래스로 downloadFile에 정보가 담겨서 전송이된다. 한개의 서블릿에는 여러개의 viewResolver가 있을 수 있기 때문에 우선순위를 설정할 수 있다. order프로퍼티를 이용해 낮은숫자부터 실행된다.