1. 개요
모든 MVC 프레임 워크는 뷰로 작업하는 방법을 제공합니다.
Spring은 뷰 리졸버를 통해이를 수행하므로 구현을 특정 뷰 기술에 묶지 않고도 브라우저에서 모델을 렌더링 할 수 있습니다.
의 ViewResolver Map는 실제 뷰에 이름을 볼 수 있습니다.
그리고 Spring 프레임 워크에는 InternalResourceViewResolver , XmlViewResolver , ResourceBundleViewResolver 및 기타 몇 가지 뷰 리졸버가 포함되어 있습니다.
이것은 가장 일반적인 뷰 리졸버를 설정하는 방법 과 동일한 구성에서 여러 ViewResolver 를 사용하는 방법을 보여주는 간단한 예제 입니다.
2. 스프링 웹 구성
웹 구성부터 시작하겠습니다. @EnableWebMvc , @Configuration 및 @ComponentScan으로 어노테이션을 달 것입니다 .
@EnableWebMvc
@Configuration
@ComponentScan("com.baeldung.web")
public class WebConfig implements WebMvcConfigurer {
// All web configuration will go here
}
여기에서 구성에서 뷰 리졸버를 설정합니다.
3. InternalResourceViewResolver 추가
이 ViewResolver를 사용하면 뷰 이름에 접두사 또는 접미사와 같은 속성을 설정하여 최종 뷰 페이지 URL을 생성 할 수 있습니다.
@Bean
public ViewResolver internalResourceViewResolver() {
InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/view/");
bean.setSuffix(".jsp");
return bean;
}
들어 같은 단순 예, 우리는 요청을 처리하는 컨트롤러가 필요하지 않습니다.
구성에 정의 된대로 / WEB-INF / view 폴더에 있는 간단한 jsp 페이지 만 있으면됩니다 .
<html>
<head></head>
<body>
<h1>This is the body of the sample view</h1>
</body>
</html>
4. ResourceBundleViewResolver 추가
이 리졸버의 이름에서 알 수 있듯이 ResourceBundleViewResolver 는 ResourceBundle 에서 빈 정의를 사용합니다 .
먼저 ResourceBundleViewResolver 를 이전 구성에 추가합니다 .
@Bean
public ViewResolver resourceBundleViewResolver() {
ResourceBundleViewResolver bean = new ResourceBundleViewResolver();
bean.setBasename("views");
return bean;
}
번들은 일반적으로 클래스 경로에있는 속성 파일에 정의됩니다. 다음은 views.properties 파일입니다.
sample.(class)=org.springframework.web.servlet.view.JstlView
sample.url=/WEB-INF/view/sample.jsp
위의 예에서 정의한 간단한 jsp 페이지를이 구성에도 사용할 수 있습니다.
5. XmlViewResolver 추가
이 ViewResolver 구현은 Spring의 XML 빈 팩토리 와 동일한 DTD 를 사용하여 XML 로 작성된 구성 파일을 허용합니다 .
@Bean
public ViewResolver xmlViewResolver() {
XmlViewResolver bean = new XmlViewResolver();
bean.setLocation(new ClassPathResource("views.xml"));
return bean;
}
다음은 구성 파일 views.xml입니다 .
<bean id="xmlConfig" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/view/xmlSample.jsp" />
</bean>
이전 예제의 경우 이전에 정의한 간단한 jsp 페이지를 사용할 수 있습니다 .
6. ViewResolvers 연결 및 주문 우선 순위 정의
Spring MVC는 다중 뷰 리졸버 도 지원합니다 .
이를 통해 일부 상황에서 특정보기를 재정의 할 수 있습니다. 구성에 둘 이상의 해석기를 추가하여 간단히보기 해석기를 연결할 수 있습니다.
이 작업을 마치면이 리졸버의 순서를 정의해야합니다. 순서 속성은 체인 호출 순서 인 정의하는데 사용된다. 순서 속성 (가장 큰 순서 번호)이 높을수록 나중에 뷰 리졸버가 체인에 배치됩니다.
순서를 정의하기 위해 뷰 리졸버의 구성에 다음 코드 줄을 추가 할 수 있습니다.
bean.setOrder(0);
InternalResourceViewResolver 는 매우 명시적인 매핑을 나타 내기 위해 더 높은 순서를 가져야 하므로 순서 우선 순위에주의하십시오 . 다른 리졸버의 순서가 더 높은 경우 InternalResourceViewResolver 가 호출되지 않을 수 있습니다.
7. 결론
이 예제에서는 Java 구성을 사용하여 뷰 리졸버 체인을 구성했습니다. 순서 우선 순위를 가지고 놀면서 우리는 그들의 호출 순서를 설정할 수 있습니다.
이 간단한 예제의 구현은 github 프로젝트 에서 찾을 수 있습니다 .
- https://docs.spring.io/spring-framework/docs/current/reference/html
- https://www.baeldung.com/spring-mvc-view-resolver-tutorial
'Java' 카테고리의 다른 글
Spring Boot : Jackson ObjectMapper 사용자 지정 (0) | 2021.04.20 |
---|---|
Spring DispatcherServlet 소개 (0) | 2021.04.20 |
Spring Handler 매핑 사용방법(예제) (0) | 2021.04.20 |
Spring MVC 콘텐츠 협상 (0) | 2021.04.19 |
Spring @RequestMapping 새로운 바로 가기 어노테이션 (0) | 2021.04.19 |