[Spring Boot] Tiles ์‚ฌ์šฉํ•˜๊ธฐ.

    ๋ฐ˜์‘ํ˜•

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

    ๋Œ“๊ธ€