๐ฎSpring
[Spring Boot] Tiles ์ฌ์ฉํ๊ธฐ.
harry.93
2022. 2. 2. 18:52
๋ฐ์ํ
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์ ์์ ๊ฐ์ด ์์ฑ๋ค์ ๋งคํํ์ฌ ์์น์ํจ๋ค.
728x90
๋ฐ์ํ