[스프링 팁] Maven을 이용한 Tiles 다운로드 및 세팅, 사용 예제 :: 소림사의 홍반장!

Requirements

Tiles 를 사용하기 위해 필요한 것들:

  •  Java SE 5.0 이상의 런타임 환경
  •  Servlet 2.4 이상 그리고 JSP 2.0 이상을 지원하는 servlet container .

 

Installation

Tiles 설치하기 : maven 이용

아래의 내용 복사해서 사용할 프로젝트의 pom.xml에 붙여넣기

 

<!-- Tiles 를 위한 설정 -->

<dependency>

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

<artifactId>tiles-extras</artifactId>

<version>2.2.2</version>

</dependency>

 

 

필요한 jar 파일이 자동으로 다운로드 되는 모습 (스프링툴 우하단)

 

 

Dependency Hierarchy 탭에서 제대로 다운로드 되었는지 확인한 모습

 

 

Usage

 

아래의 주소를 복사하여 SVN Repository에 등록하기

 

 

 

스프링 툴에 등록된 모습

 

 

등록된 tiles-showcase 프로젝트의 tiles-defs.xml 파일 복사

 

 

사용할 프로젝트의 같은 위치에 붙여넣기!

 

 

tiles-defs.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=".main" template="/layout/main.jsp">

               <put-attribute name="header"

                                                     value="/layout/header.jsp" />

               <put-attribute name="menu"

                                                     value="/index.jsp" />

               <put-attribute name="body"

                                                     value="/index.jsp" />

               <put-attribute name="footer"

                                                     value="/layout/footer.jsp" />

        </definition>

       

        <definition name=".*.*.*" extends=".main">

               <put-attribute name="body"

                              value="/WEB-INF/views/{1}/{2}/{3}.jsp" />

        </definition>

        <definition name=".*.*" extends=".main">

               <put-attribute name="body"

                              value="/WEB-INF/views/{1}/{2}.jsp" />

        </definition>

        <definition name=".*" extends=".main">

               <put-attribute name="body"

                              value="/WEB-INF/views/{1}.jsp" />

        </definition>

</tiles-definitions>

 

 

 

사용할 프로젝트의 webapp 폴더에 layout 폴더 만들기

 

 

 

생성한 layout 폴더에 아래의 jsp 파일을 생성

footer.jsp

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

    pageEncoding="UTF-8"%>

<h1>다리</h1>

 

header.jsp

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

    pageEncoding="UTF-8"%>

<h1>머리</h1>

 

main.jsp

<?xml version="1.0" encoding="UTF-8" ?>

<%@ 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="spring" uri="http://www.springframework.org/tags" %>

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

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

<% String cp = request.getContextPath(); %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<style type="text/css">

.main {

        width: 800px;

}

.menu {

        position: absolute; width: 300px;

}

.body {

        margin-left: 310px;

}

</style>

<title>스프링 프로젝트</title>

</head>

<body>

<div class="main">

        <div class="header">

               <tiles:insertAttribute name="header" />

        </div>

        <div class="content">

               <div class="menu">

                       <tiles:insertAttribute name="menu" />

               </div>

               <div class="body">

                       <tiles:insertAttribute name="body" />

               </div>

        </div>

        <div class="footer">

               <tiles:insertAttribute name="footer" />

        </div>

</div>

</body>

</html>

 

 

 

 

servlet-context.xml 열기

 

 

아래의 내용을 servlet-context.xml 의 기존 Resolver 설정 위에 추가

        <!-- Tiles 사용을 위한 세팅 -->

        <beans:bean id="tilesConfigurer"

               class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">

               <beans:property name="definitions">

                       <beans:list>

                              <beans:value>/WEB-INF/tiles-defs.xml</beans:value>

                       </beans:list>

               </beans:property>

               <!-- resolving preparer names as Spring bean definition names -->

               <beans:property name="preparerFactoryClass"

                       value="org.springframework.web.servlet.view.tiles2.SpringBeanPreparerFactory" />

        </beans:bean>

 

        <!-- Tiles 를 위한 ViewResolver 세팅

                       Controller에서 return ". 으로 시작하면 작동! -->

        <beans:bean id="viewResolver"

               class="org.springframework.web.servlet.view.UrlBasedViewResolver">

               <beans:property name="viewClass"

                       value="org.springframework.web.servlet.view.tiles2.TilesView" />

               <beans:property name="order" value="1"></beans:property>

               <beans:property name="viewNames" value=".*"></beans:property>

        </beans:bean>

 

 

기존의 InternalReourceViewResolver 의 order 값 추가

 

 

다른 카테고리의 글 목록

Dev. 스프링/환경세팅 카테고리의 포스트를 톺아봅니다