https://tiles.apache.org/download.html
현재 버전 3.0.8 - 이 프로젝트는 중단되었습니다.
Apache Tiles는 자바 기반의 템플릿 프레임워크로, 뷰 레이어를 재사용 가능한 컴포넌트로 구성할 수 있도록 도와줍니다. 다음은 Apache Tiles를 설정하는 기본적인 방법입니다.
1. Maven 의존성 추가
프로젝트가 Maven을 사용하고 있다면 pom.xml 파일에 Tiles 관련 의존성을 추가해야 합니다.
xml
<!-- apache tiles -->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>3.0.8</version>
</dependency>
2. Tiles 설정 파일 작성
Tiles 설정 파일을 작성하여 템플릿 및 뷰 구성 요소를 정의합니다. 보통 tiles.xml 파일로 작성합니다.
xml
<?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="baseTemplate" template="/WEB-INF/layouts/baseLayout.jsp">
<put-attribute name="title" value="Default Title"/>
<put-attribute name="header" value="/WEB-INF/layouts/header.jsp"/>
<put-attribute name="footer" value="/WEB-INF/layouts/footer.jsp"/>
<put-attribute name="content" value=""/>
</definition>
<definition name="home" extends="baseTemplate">
<put-attribute name="title" value="Home Page"/>
<put-attribute name="content" value="/WEB-INF/views/home.jsp"/>
</definition>
</tiles-definitions>
3. Spring Configuration 설정
Spring을 사용하고 있다면 TilesConfigurer와 TilesViewResolver를 설정 파일에 추가해야 합니다.
java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesViewResolver;
@Configuration
@EnableWebMvc
public abstract class WebConfig implements WebMvcConfigurer {
@Bean
public TilesConfigurer tilesConfigurer() {
TilesConfigurer tilesConfigurer = new TilesConfigurer();
tilesConfigurer.setDefinitions(new String[] {"/resources/tiles.xml"});
tilesConfigurer.setCheckRefresh(true);
return tilesConfigurer;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
TilesViewResolver viewResolver = new TilesViewResolver();
registry.viewResolver(viewResolver);
}
}
4. 레이아웃 및 뷰 파일 작성
/WEB-INF/layouts/ 폴더에 기본 레이아웃 파일 baseLayout.jsp를 작성하고, 필요한 헤더와 푸터 파일을 작성합니다.
baseLayout.jsp 예제:
jsp
<!DOCTYPE html> <html> <head> <title><tiles:getAsString name="title"/></title> </head> <body> <div> <tiles:insertAttribute name="header"/> </div> <div> <tiles:insertAttribute name="content"/> </div> <div> <tiles:insertAttribute name="footer"/> </div> </body> </html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title><tiles:getAsString name="title"/></title>
</head>
<body>
<div>
<tiles:insertAttribute name="header"/>
</div>
<div>
<tiles:insertAttribute name="content"/>
</div>
<div>
<tiles:insertAttribute name="footer"/>
</div>
</body>
</html>
header.jsp, footer.jsp, home.jsp 파일도 /WEB-INF/layouts/ 또는 /WEB-INF/views/에 작성합니다.
5. 컨트롤러 작성
Spring MVC 컨트롤러를 작성하여 Tiles 뷰를 반환합니다.
java
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/home") public String home() { return "home"; // tiles.xml에서 정의한 이름 } }
이렇게 설정하면 /home 요청이 들어올 때 tiles.xml에 정의된 home 뷰가 사용되고, baseTemplate 레이아웃을 기반으로 페이지가 렌더링됩니다.
|