른록노트

[Spring] 전자정부프레임워크 Tiles 적용하기 (3.10) 본문

Web/[Spring]

[Spring] 전자정부프레임워크 Tiles 적용하기 (3.10)

른록 2021. 12. 14. 16:46

1. Tiles란

공식홈페이지
웹 사이트의 템플릿을 조합하여 사용할 수 있게 제공해주는 템플릿 프레임워크입니다.

장점: 공통으로 사용되는 페이지들을 따로 관리할 수 있어서 재사용성이 높아집니다.
단점: 공통으로 사용되는 페이지가 없을 경우 복잡성만 증가 할 수 있습니다.

보통 jsp:include와 많이 비교됩니다.

2. 방법

2.1 .pom.xml에 라이브러리 추가

        <!-- tiles -->
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-extras</artifactId>
            <version>3.0.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-servlet</artifactId>
            <version>3.0.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-jsp</artifactId>
            <version>3.0.8</version>
        </dependency>
        <!-- tiles -->

2.2. dispatcher-servlet.xml 변경

아래 소스를

<bean
        class="org.springframework.web.servlet.view.UrlBasedViewResolver"
        p:order="1"
        p:viewClass="org.springframework.web.servlet.view.JstlView"
        p:prefix="/WEB-INF/jsp/egovframework/example/" p:suffix=".jsp" />

아래와 같이 변경

<!-- tiles 설정 -->
    <bean id="tilesViewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.tiles3.TilesView" />
        <property name="order" value="1" />
    </bean>
    <bean id="tilesConfigurer"
        class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
        <property name="definitions">
            <list>
                <value>/WEB-INF/tiles/tiles-layout.xml</value>
            </list>
        </property>
    </bean>
    <!--/tiles -->
    <bean
        class="org.springframework.web.servlet.view.UrlBasedViewResolver"
        p:order="2"
        p:viewClass="org.springframework.web.servlet.view.JstlView"
        p:prefix="/WEB-INF/jsp/egovframework/example/" p:suffix=".jsp" />

2.3. /WEB-INF/tiles/tiles-layout.xml 파일 생성

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">

<tiles-definitions>
    <!-- 메뉴 탭 타일즈 -->
    <definition name="layouts-tiles"         template="/WEB-INF/tiles/tiles-layout.jsp">
        <put-attribute name="loadFile"        value="/WEB-INF/tiles/inc/loadFile.jsp" />
        <put-attribute name="header"           value="/WEB-INF/tiles/inc/header.jsp" />
        <put-attribute name="left"            value="/WEB-INF/tiles/inc/left.jsp" />
        <put-attribute name="body"           value=""/>
        <put-attribute name="footer"        value="/WEB-INF/tiles/inc/footer.jsp" />
    </definition>

    <definition name="*/*" extends="layouts-tiles"> <!-- definition name은 controller에서 return 해주는 값을 매칭 시킴 -->
        <put-attribute name="body" value="/WEB-INF/jsp/egovframework/example/{1}/{2}.jsp" />
    </definition>

</tiles-definitions>

2.4. /WEB-INF/tiles/tiles-layout.jsp 파일을 생성한다

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles"  prefix="tiles"%>
<!DOCTYPE html>
<html>
<head>
    <tiles:insertAttribute name="loadFile"/>
</head>
<body>
<div id="wrap">

    <div id="nav"><tiles:insertAttribute name="header"/></div>
    <div id="left"><tiles:insertAttribute name="left"/></div>
    <div id="body"><tiles:insertAttribute name="body"/></div>
    <div id="footer"><tiles:insertAttribute name="footer"/></div>

</div>
</body>
</html>

2.5. 상황에 맞게 템플릿 사용하기

tiles-layout.xml 파일에
이 부분을
로 변경하고 아래와 같이 사용할 수 있고 extends에 그에 맞는 definition을 만들어서 사용하면 된다.


@Controller
public class tilesTest {

    @RequestMapping(value = "/tiles/test.do")
    public String TilesTest() {
        return "tiles/test.tiles"; // */*.tiles 매칭
    }
}

참고사이트

https://it-gosu.tistory.com/3

반응형
Comments