Preloader image
DDD

자바

apache tiles 설정

작성자 관리자 (admin)
조회수 4,793
입력일 2024-07-27 09:08:30

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 레이아웃을 기반으로 페이지가 렌더링됩니다.