본문 바로가기

Tip/Spring

spring MVC + tiles 2.2.2

본 포스팅은 STS로부터 생성된 Spring MVC 를 기반으로 한다. 



  개요


레이아웃 프레임워크로 많이 사용하는 tiles 를 spring MVC 와 연동하는 것을 순서대로 적어본다. 




  pom.xml


pom.xml 파일에 tiles 설정과 관련한 라이브러리를 선언한다. 참고로 2012-07-11 에 Version: 3.0.1 이 릴리즈 되었다. 하지만 이 포스팅에서는 2.2.2 를 사용해보도록 한다.


<properties>

<java-version>1.6</java-version>

<org.springframework-version>3.1.1.RELEASE</org.springframework-version>

<org.aspectj-version>1.6.10</org.aspectj-version>

<org.slf4j-version>1.6.6</org.slf4j-version>

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

</properties>



<dependency>

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

<artifactId>tiles-extras</artifactId>

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

</dependency>




  servlet-context.xml


기존의 InternalResourceViewResolver 대신 TilesViewResolver 를 등록한다. tiles 과 관련된 설정은 tiles-defs.xml 에 설정하기로 한다.


<beans:bean

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

<beans:property name="prefix" value="/WEB-INF/views/" />

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

</beans:bean>


spring MVC project 로 설정한 InternalResourceViewResolver 이다. 이부분을 아래와 같이 바꿔준다.


<beans:bean id="tilesViewResolver"

class="org.springframework.web.servlet.view.tiles2.TilesViewResolver" />


<beans:bean id="tilesConfigurer"

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

<beans:property name="definitions" value="/WEB-INF/tiles-defs.xml" />

</beans:bean>




  tiles-defs.xml


Tiles 와 관련된 설정을 포함하는 파일이다. home 라는 view 요청시 .main 이라는 이름으로 정의된 템플릿의 main 부분에 home.jsp 로 대체한다는 내용이다. 


경우에 따라서 wildcard 형식을 이용할 수 있다. 2.x 에서의 wildcard 지원으로 일종의 URL Pattern 형태를 취할 수 있는 장점이 생겼다.


<?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="/WEB-INF/views/layouts/layout.jsp">

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

<put-attribute name="main" value="/WEB-INF/views/layouts/main.jsp" />

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

</definition>

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

<put-attribute name="main" value="/WEB-INF/views/home.jsp" />

</definition>

</tiles-definitions> 



  template 파일 생성


layout.jsp


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

pageEncoding="UTF-8"%>

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

<html>

<head>

<title>Home</title>

</head>

<body>

<tiles:insertAttribute name="header"/>

<tiles:insertAttribute name="main"/>

<tiles:insertAttribute name="footer"/>

</body>

</html>




  예제







  참고


Tiles Homehttp://tiles.apache.org/