๐Ÿ”ฎ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
๋ฐ˜์‘ํ˜•