른록노트
[Spring] 전자정부프레임워크 Tiles 적용하기 (3.10) 본문
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 매칭
}
}
참고사이트
반응형
Comments