Spring Boot - Tiles 사용하기.
in Backend / Spring on Tiles, Springboot
1. build.gradle 추가
// tiles
implementation group: 'org.apache.tiles', name: 'tiles-jsp', version: '3.0.5'
2. tiles.xml 설정 파일 추가
webapp/WEB-INF/tiles/ 에 tiles.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="main" template="/WEB-INF/views/layout/main/layout.jsp">
<put-attribute name="HEADER" value="/WEB-INF/views/layout/main/header.jsp" />
<put-attribute name="NAVIGATION" value="/WEB-INF/views/layout/main/navigation.jsp" />
<put-attribute name="FOOTER" value="/WEB-INF/views/layout/main/footer.jsp" />
</definition>
<!-- spring framework 에서는 jsp를 생략해도 됐는데. 여기서는 해줘야 해당 뷰를 찾는다 ... -->
<definition name="**.main.jsp" extends="main">
<put-attribute name="CONTENT" value="{1}.jsp" />
</definition>
</tiles-definitions>
main이라는 정의를 만들고, 그 안에 헤더/네비게이션/푸터의 속성을 만들고 파일을 지정했다.
하위에는 *.main.jsp 라는 요청에 대해 처리할 컨텐츠 속성을 지정했으며 main에서 확장된 정의이다.
{1}의 의미는 예를 들어, index.main.jsp 파일을 찾는 경우 {1}에는 첫번째 파라미터인 index가 매핑 되어 index.jsp 파일을 찾게 된다.
이를 이용하여 정의에 /comm/member/*.main.jsp 속성을 지정할 경우, 차례로 {1}/{2}/{3}.main.jsp가 된다.
3. 레이아웃 만들기
views/layout 폴더 밑에 해당 파일들을 생성한다.
4. 추가하기
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<!DOCTYPE html>
<html lang=ko>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
<link rel="stylesheet" type="text/css" href="/css/main.css" media="all" />
<script type="text/javascript" src="/js/main.js"></script>
</head>
<body>
<div class="header">
<tiles:insertAttribute name="HEADER"/>
</div>
<div class="navi">
<tiles:insertAttribute name="NAVIGATION"/>
</div>
<div class="content">
<tiles:insertAttribute name="CONTENT"/>
</div>
<div class="footer">
<tiles:insertAttribute name="FOOTER"/>
</div>
</body>
</html>
layout.jsp에 위와 같이 속성들을 매핑하여 위치시킨다.