본문 바로가기

Dev. Java/Dev.Spring

[SPRING] 타일즈3 TILES3 세팅하기

[사용예]

> jsp 자원을 재사용하게 도와주는 기술로

   주로 공통적으로 사용하는 Header, Footer, Menu(Navigation) 등을 세팅한다.


> 아래와 같이 설정해두면, 어떤 페이지를 호출하던 아래 세팅한 내용들은 기본적으로 세팅되어 호출된다.



1. Pom.xml 추가

> Step 1) properties 내에 다음과 같은 소스를 추가

<org.apache.tiles-version>3.0.5</org.apache.tiles-version>



> Step 2) dependency 추가

        <!-- Tiles -->

<dependency>

<groupId>org.apache.tiles</groupId>

<artifactId>tiles-extras</artifactId>

<version>${org.apache.tiles-version}</version>

</dependency>


 Library 추가.



2. Servlet.xml 추가

Step 1) 아래와 같이 Bean을 추가한다.

  <!-- Tiles -->

   <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1">

<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />

</bean>

   

<bean id="tilesConfigurer"  class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">

<property name="definitions">

<list>

<value>/WEB-INF/tiles.xml</value>

</list>

</property>

<!-- <property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory" /> -->

</bean>

   


       Step 2) 기존 viewer는 order를 2로 변경한다.

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/jsp/ directory -->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="2">

<property name="prefix" value="/WEB-INF/jsp/" />

<property name="suffix" value=".jsp" />

</bean>

 Servlet에 추가할 Bean은 크게 ViewResolver와 Configurer로서

 ViewResolver는 페이지 호출 시 실행되어 페이지를 연결하는 역할을 하고

 Configurer는 참조할 tiles 세팅을 지정한다.


 Step2에서 기존 Viewer의 오더 순서를 바꿔준다. 필요에 따라 소스 자체를 없애도 상관없다.



3. layout HTML / JSP 추가

Step 1) /WEB-INF 아래에 views 또는 jsp 폴더 아래에 다음과 같은 jsp 또는 html 파일을 생성한다.

           template.jsp에서 굵은 글씨를 주요로 보자.

 > common-body.jsp

    공통 바디 영역


 > footer.jsp

   푸터 영역


 > header.jsp

   <!-- 각종 스크립트 및 CSS -->


 > template.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>

<%@ taglib prefix="tiles"  uri="http://tiles.apache.org/tags-tiles" %>

<%@ taglib prefix="spring"  uri="http://www.springframework.org/tags" %>

<%@ taglib prefix="form"  uri="http://www.springframework.org/tags/form" %>

<%@ taglib prefix="fn"  uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html>

<html>

<head>

<!-- 각종 스크립트 및 CSS -->

<script type="text/javascript">

$(document).ready(function(){

});

</script>


</head>

<body>

<br>

<br>

<br>

<!-- Body

================================================== -->

<div id=common-body >

<tiles:insertAttribute name="common-body"/>

</div>

<div id="body">

<tiles:insertAttribute name="body"/>

</div>

<div id="footer">

<tiles:insertAttribute name="footer"/>

</div>

<!-- Body

================================================== -->

</body>

</html>




4. tiles.xml 추가

Step 1) tiles.xml 을 /WEB-INF 밑에 생성한다.


Step 2) tiles.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="default" template="/WEB-INF/jsp/layout/template.jsp">

<put-attribute name="header" value="/WEB-INF/jsp/layout/header.jsp"/>

<put-attribute name="common-body" value="/WEB-INF/jsp/layout/common-body.jsp"/>

<put-attribute name="body" />

<put-attribute name="footer" value="/WEB-INF/jsp/layout/footer.jsp"/>

</definition>

<definition name="*/*/*" extends="default">

<put-attribute name="body" value="/WEB-INF/jsp/{1}.jsp"/>

<put-attribute name="body" value="/WEB-INF/jsp/{1}/{2}.jsp"/>

<put-attribute name="body" value="/WEB-INF/jsp/{1}/{2}/{3}.jsp"/>

</definition>

</tiles-definitions>

 tiles.xml은 tiles로서 사용할 html과 jsp를 미리 세팅하는 역할이다. 

 따라서, definition 태그안에 JSP/html 자원은 각자 필요에 따라 변경하면 된다.



위와 같이 세팅하고, 페이지를 호출했을 때 페이지가 제대로 로딩되면 성공.



[출처] http://derveljunit.tistory.com/