JSP

Tiles(레이아웃처리)

사라링 2012. 5. 8. 18:18

컴포지트 뷰(Composite View) 패턴을 구현한 라이브러리 중에서 현재 널리 사용되고 있는 라이브러리는 Tiles 2로서,

http://tiles.apache.org/download.html 사이트에서 최신버전을 다운로드 받을 수 있다. 현재 최신버전은 2.2.2이고 자바 5 또는 그 이상 버전에서 동작한다.

  1. 필요한 jar 파일을 WEB-INF/lib 디렉터리에 복사한다.
  2. web.xml에 초기화 코드 추가
  3. Tile 2 설정파일 작성
  4. 레이아웃 템플릿 JSP 파일 작성
  5. 템플릿을 사용하는 JSP 파일 작성

미니 코드

gate.jsp

1
2
3
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<tiles:insertDefinition name="test" />

tiles-test.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="euc-kr" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
 
<tiles-definitions>
<definition name="test" template="/container.jsp">
<put-attribute name="title" value="Hello" />
<put-attribute name="header" value="/header.jsp" />
<put-attribute name="menu" value="/side.jsp" />
<put-attribute name="content" value="/content.jsp" />
</definition>
</tiles-definitions>

web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
<servlet>
<servlet-name>tiles</servlet-name>
<servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class>
<init-param>
<param-name>
org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
</param-name>
<param-value>
/WEB-INF/tiles-test.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
... 
</web-app>

container.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<html>
<head>
<title><tiles:getAsString name="title" /></title>
</head>
<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2"><tiles:insertAttribute name="header" /></td>
</tr>
<tr>
<td valign="top"><tiles:insertAttribute name="menu" /></td>
<td valign="top"><tiles:insertAttribute name="content" /></td>
</tr>
</table>
</body>
</html>

TilesDispatchServlet을 사용하면 웹 요청 URI와 동일한 이름을 같는 Definition을 바로 클라이언트에 출력할 수 있다. TilesDispatchServlet을 사용하려면 <servlet>태그를 이용해서 TilesDispatchServlet을 web.xml 파일에 등록하고, <servlet-mapping>을 이용해서 TilesDispatchServlet이 처리할 확장자를 설정하면 된다.

web.xml

1
2
3
4
5
6
7
8
9
10
<servlet>
<servlet-name>TilesDispatchServlet</servlet-name>
<servlet-class>
org.apache.tiles.web.util.TilesDispatchServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TilesDispatchServlet</servlet-name>
<url-pattern>*.tiles</url-pattern>
</servlet-mapping>

 

이 글은 스프링노트에서 작성되었습니다.