** 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"> <a href="#">메뉴1</a> | <a href="#">메뉴2</a> | <a href="#">메뉴3</a> | <a href="#">메뉴4</a> | </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