컨트롤러가 지정한 뷰이름으로부터 응답결과를 출력해주는 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프로퍼티를 이용해 낮은숫자부터 실행된다.
'Spring' 카테고리의 다른 글
Spring(11) - XML/JSON, @RequestBody, @ResponseBody (0) | 2019.04.16 |
---|---|
Spring(10) - Restful방식을 스프링에서사용하기 (2) | 2019.04.15 |
Spring(8) - HandlerMapping, HandlerAdapter (0) | 2019.04.15 |
Spring(7) - HandlerInterceptor (0) | 2019.04.15 |
Spring(6) - 스프링 MVC프로젝트 (0) | 2019.04.12 |