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에 위와 같이 속성들을 매핑하여 위치시킨다.


© 2024. Chiptune93 All rights reserved.