본문 바로가기
Spring

spring 3.2 / tiles3

by 아이티.파머 2013. 12. 18.
반응형

오히려 tiles3로 오면서 설정이 더욱 간단해 졌다고 한다.



tiles3를 사용하기 위해서는 spring version 3.2 이상부터 사용가능하다.

참고로 3.5 이상 부터는 RedirectAttributes 를 제공 하여, redirect시 paremeter 를  ModelMap 과같이 사용하는

아주 좋은 효과를 볼수 있다. 



maven을 사용하고 있다면

pom.xml

<org.apache.tiles.version>3.0.1</org.apache.tiles.version>


<!-- tiles -->

<dependency>

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

   <artifactId>tiles-extras</artifactId>

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

</dependency>






 * context-servlet.xml


<!-- 뷰리졸버 안에 넣어서 사용하도록 한다. 안그럼 인식 안함.-->

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

   <!--Don't add suffix or prefix like you do with .jsp files-->

   <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/tiles.xml</value> 

         </list> 

   </property>

</bean>



view resolver 테그 안으로 써넣치 않으면 동작이 안되던데, 그이유는 이전 2.5 버전시 사용하던 테그와 충돌?이 생기는것 같음. 시간이 없어서 뷰리졸부안으로 집어여 넣어서 사용중..




* tiles.xml

<!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="tilesbase"  template="/views/layout/user/userLayout.jsp">   

   <put-attribute name="title" value="" />        

   <put-attribute name="header" value="/views/layout/user/userHeader.jsp" />   

   <put-attribute name="menu" value="/views/layout/user/userMenu.jsp" />      

   <put-attribute name="body" value="" />       

   <put-attribute name="footer" value="/views/layout/user/userFooter.jsp" />   

</definition>      

 

<!-- 컨트롤러에서 리턴해 주는 뷰이름,본예제는 hello  -->

<definition name="user/*/*/*" extends="tilesbase">    

   <put-attribute name="title" value="Secure Coding, MVC Hello world by Tiles 3 " />

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

</definition>

<definition name="user/*/*" extends="tilesbase">    

   <put-attribute name="title" value="Secure Coding, MVC Hello world by Tiles 3" />

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

</definition>  

 

</tiles-definitions>


최상위로 베이스 템플릿을 하나 만들고 그뒤로 extends 해서 사용하도록 한다.

extends된 내용은 별도의 선언이 없어도 상위 템플릿에서 사용한 attribute를 상속받아 사용하게 되므로

중독된 내용의 attribute를 적을 필요 없다.



* layout.jsp

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

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

<!DOCTYPE html>

<html>

<head>

<title><tiles:insertAttribute name="title" ignore="true" /></title>


<script type="text/javascript"></script>



<style type="text/css"></style>


</head>

<body>

<tiles:insertAttribute name="header" />

<%-- <tiles:insertAttribute name="menu" /> --%>

<tiles:insertAttribute name="body" />

<tiles:insertAttribute name="footer" />

</body>

</html>


굵게 표시된 value와 name에 유의하여 사용


* ***controller.java


package com.softforum.bluetang.user.project.controller;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;


/**

 * @author skan

 *

 */

@Controller

@RequestMapping("/user/project")

public class ProjectManagementController {

Logger logger = LoggerFactory.getLogger(this.getClass());

@RequestMapping("/management/projectRegistForm.do")

public void moveProjectRegistForm() throws Exception {

System.out.println("test1");  

}

}






외국인 아저씨가 잘 써놓은 링크를 확인하자

http://www.codingpedia.org/ama/spring-mvc-and-apache-tiles-integration-example/






반응형