프로젝트의 pom.xml에 라이브러리를 추가한다.
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>3.0.8</version>
</dependency>
Tiles와 Spring Controller을 연결하기 위해 Tiles를 위한 ViewResolver을 추가한다.
@Configuration
@EnableWebMvc
@Import({ DataBaseConfig.class })
@ComponentScan({ " com.emunhi.web.controller", " com.emunhi.service", " com.emunhi.init.comp" })
@MapperScan("com.emunhi.web.mapper")
@PropertySource("classpath:config/properties/${spring.profiles.active}/application.properties")
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public BeanNameViewResolver beanNameViewResolver() {
BeanNameViewResolver resolver = new BeanNameViewResolver();
resolver.setOrder(0);
return resolver;
}
@Bean
public UrlBasedViewResolver urlBasedViewResolver() {
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
/**
* 아래의 JstlView 의 View Resolver보다 Order을 높게 설정한다.
*/
resolver.setViewClass(TilesView.class);
resolver.setOrder(1);
return resolver;
}
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
resolver.setOrder(2);
return resolver;
}
/**
* Tiles 정의파일 설정
*/
@Bean
public TilesConfigurer tilesConfigurer() {
TilesConfigurer tilesConfigurer = new TilesConfigurer();
tilesConfigurer.setDefinitions(new String[] { "/WEB-INF/config/tiles/tiles.xml" });
tilesConfigurer.setCheckRefresh(true);
return tilesConfigurer;
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="base/default" template="/WEB-INF/config/layout/layout.jsp">
<put-attribute name="header" value="/WEB-INF/config/layout/header.jsp" />
<put-attribute name="left" value="/WEB-INF/config/layout/left.jsp" />
<put-attribute name="right" value="/WEB-INF/config/layout/right.jsp" />
<put-attribute name="footer" value="/WEB-INF/config/layout/footer.jsp" />
<put-attribute name="contents" value="" />
</definition>
<definition name="contents/*.tiles" extends="base/default">
<put-attribute name="contents" value="/WEB-INF/jsp/contents/{1}.jsp" />
</definition>
<definition name="contents/*/*.tiles" extends="base/default">
<put-attribute name="contents" value="/WEB-INF/jsp/contents/{1}/{2}.jsp" />
</definition>
<definition name="contents/*/*/*.tiles" extends="base/default">
<put-attribute name="contents" value="/WEB-INF/jsp/contents/{1}/{2}/{3}.jsp" />
</definition>
<definition name="contents/*/*/*/*.tiles" extends="base/default">
<put-attribute name="contents" value="/WEB-INF/jsp/contents/{1}/{2}/{3}/{4}.jsp" />
</definition>
</tiles-definitions>
</head>
<body>
<div>
<div id="id_header">
<tiles:insertAttribute name="header" />
</div>
<div id="id_main">
<div id="id_cont">
<tiles:insertAttribute name="contents" />
</div>
</div>
<div id="id_left">
<div>
<tiles:insertAttribute name="left" />
</div>
</div>
<div id="id_right">
<div>
<tiles:insertAttribute name="right" />
</div>
</div>
<div id="id_footer">
<tiles:insertAttribute name="footer" />
</div>
</div>
</body>
</html>