1. Jar File Download
http://wiki.sitemesh.org/wiki/display/sitemesh/Download
jar 다운로드. (테스트 버전 sitemesh-2.4.2.jar)
** Maven dependency 추가
<!-- sitemesh -->
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.4.2</version>
</dependency>
2.필터설정 (web.xml)
- filter를 설정하여 요청받은 url을 가로채기 위해 web.xml에 아래 설정을 추가한다.
(모든 url에 적용되도록 설정하였다)
<!-- sitemesh -->
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>
com.opensymphony.module.sitemesh.filter.PageFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- // sitemesh -->
3.레이아웃 설정파일 추가
WEB-INF 하위에 sitemesh.xml과 decorators.xml 을 추가.
4. sitemesh.xml
샘플소스에 있는 sitemesh.xml을 그대로 적용.
<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
<!--decorator 결정 -->
<property name="decorators-file" value="/WEB-INF/decorators.xml" />
<excludes file="${decorators-file}" />
<!--parser를 설정:해당 페이지의 content-type에 따라 데코레이터 결정 -->
<page-parsers>
<parser content-type="text/html"
class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
<parser content-type="text/html;charset=UTF-8"
class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
</page-parsers>
<decorator-mappers>
<mapper
class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
<param name="decorator" value="printable" />
<param name="parameter.name" value="printable" />
<param name="parameter.value" value="true" />
</mapper>
<mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
<param name="property" value="meta.decorator" />
</mapper>
<!-- mapper결정 : 설정파일 사용하여 decorator정하기 -->
<mapper
class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}" />
</mapper>
</decorator-mappers>
</sitemesh>
5. decorators.xml
header, footer 추가.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Default Diretory 설정 footer, header 등 jsp파일 위치 -->
<decorators defaultdir="/WEB-INF/views/decorators">
<decorator name="_sidebar" page="sidebar.jsp" />
<decorator name="_header" page="header.jsp" />
<decorator name="_footer" page="footer.jsp" />
</decorators>
6. 적용 예제
<body>
<div id="wrap">
<div id="header">
<page:applyDecorator name="_header" />
</div><hr /><!--end header-->
<div id="body">
<div id="sidebar">
<page:applyDecorator name="_sidebar" />
</div>
<decorator:title />
<decorator:body />
</div><!-- end body -->
<div id="footer">
<page:applyDecorator name="_footer" />
</div><!-- end footer -->
</div><!-- end wrap -->
</body>
decorators.xml에서 설정한 _header, _sidebar, _footer 파일 내용이 페이지의 지정된 위치에 삽입된다.