본문 바로가기

프로그래밍/JAVA

SiteMesh Layout적용하기

** SiteMesh를 이용해 Layout 적용하기

샘플 싸이트는 다음과 같은 두개의 Layout 구조를 가진다.

main.jsp >

topMenu.jsp

leftLogin.jsp

Contents

rightBanner.jsp

leftBanner.jsp

footer.html

default.jsp >

topMenu.jsp

Contents

rightBanner.jsp

footer.html

1. \template\에 template용 파일을 생성한다.

topMenu.jsp,

leftLogin.jsp

leftBanner.jsp

rightBanner.jsp

footer.html

샘플 : topMenu.jsp >

<%@ page contentType="text/html; charset=euc-kr" %>
<html>
<head>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=euc-kr">
</head>
<body>
<table width="100%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td width="180">
<a href="<%=request.getContextPath()%>/index.jsp"><img src="/images/logo_uasis.gif" width="159" height="56" border="0"></a>
</td>
<td class="menuTitle">&nbsp;&nbsp;&nbsp;
<a href="#">메뉴1</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
<a href="#">메뉴2</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
<a href="#">메뉴3</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
<a href="#">메뉴4</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
</td>
</tr>
</table>
</body>
</html>

2. \decorators\에 layout용 파일 (main.jsp, default.jsp) 을 생성한다.

샘플 : default.jsp >

<%@ page contentType="text/html; charset=euc-kr" %>

<%@ taglib uri="sitemesh-decorator" prefix="decorator" %>
<%@ taglib uri="sitemesh-page" prefix="page" %>
<html>
<head>
<title><decorator:title default="Default Layout" /></title>
<link href="<%= request.getContextPath() %>/decorators/main.css" rel="stylesheet" type="text/css">
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>

<body>
<table width="100%" height="100%" border="0" cellpadding=0 cellspacing=0>
<tr>
<td>

<table width="100%" height="100%" border="0" cellpadding=0 cellspacing=0>
<tr>
<td id="pageHeader" height="30">
<page:applyDecorator page="/template/topMenu.jsp" name="panelNoTitle" encoding="euc-kr"/>
</td>
</tr>
<tr>
<td valign="top">
<decorator:body />
</td>
</tr>
<tr>
<td id="pageFooter" height="20">
<page:applyDecorator page="/template/footer.html" name="panelNoTitle" encoding="euc-kr"/>
</td>
</tr>
</table>

</td>
<td width="120" valign="top">
<page:applyDecorator page="/template/rightBanner.jsp" name="panelNoTitle" encoding="euc-kr"/>
</td>
</tr>
</table>
</html>

3. \WEB-INF\decorators.xml 에 정의한 layout 정보 추가

<excludes>
<pattern>/popup/*</pattern>

</excludes>

<decorator name="main" page="main.jsp">
<pattern>/index.*</pattern>
</decorator>

<decorator name="default" page="default.jsp">
<pattern>/*</pattern>
</decorator>

<decorator name="panelHasTitle" page="panelHasTitle.jsp"/>
<decorator name="panelNoTitle" page="panelNoTitle.jsp"/>

모든 /index.* 로 들어오는 Request 는 main.jsp 의 layout 을 따르며,

그외의 모든 Request 는 default.jsp 의 layout을 따른다.

단, /popup/test.jsp 와 같이 /popup/ 경로로 들어어는 Request는 sitemesh가 적용되지 않는다.



출처>> http://blog.naver.com/PostView.nhn?blogId=saturnfly&logNo=70012924068