sitemesh는 웹페이지를 구성하는 레이아웃을 효율적으로 처리할 수 있게 도와주는 프레임워크이다.
웹페이지의 동일한 상단, 하단, 메뉴등의 부분들은 한 곳에서 관리하고 각각의 페이지는 실제 내용만을 관리한다.
즉 공통된 부분들을 한곳에 집중해서 처리하고 변경되는 부분만 변경될 수 있게 해주는 프레임워크이다.
lib.jar로 사용시
http://www.opensymphony.com/sitemesh/download.action
최신버전을 다운로드 받아 웹 어플리케이션 WEB-INF/lib 디렉토리에 복사해 넣으면 된다.
maven 프로젝트 사용시
pom.xml
<!-- https://mvnrepository.com/artifact/opensymphony/sitemesh -->
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.4.2</version>
</dependency>
web.xml
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>*.do</url-pattern>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
.do로 끝나는 모든 url요청을 sitemesh 필터적용
INCLUDE : url에 입력해서 들어올 경우
FORWARD : include()를 통해 들어올 경우 ( <jsp:include...> )
REQUEST : forward()를 통해 들어올 경우 ( <jsp:forward ...> )
sitemesh.xml (sitemesh 설정 및 decorators.xml 파일 호출)
WEB-INF/ 경로아래에 설정
decorators.xml 위치는 조절 가능
<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml"/> 이부분이 decorators.xml의 위치를 지정하는 구간
<excludes file="${decorators-file}"/>
<page-parsers>
<parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
</page-parsers>
<decorator-mappers>
<mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
<param name="property.1" value="meta.decorator" />
<param name="property.2" value="decorator" />
</mapper>
<mapper class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">
</mapper>
<mapper class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">
<param name="match.MSIE" value="ie" />
<param name="match.Mozilla [" value="ns" />
<param name="match.Opera" value="opera" />
<param name="match.Lynx" value="lynx" />
</mapper>
<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.RobotDecoratorMapper">
<param name="decorator" value="robot" />
</mapper>
<mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
<param name="decorator.parameter" value="decorator" />
<param name="parameter.name" value="confirm" />
<param name="parameter.value" value="true" />
</mapper>
<mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper">
</mapper>
<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}" />
</mapper>
</decorator-mappers>
</sitemesh>
decorators.xml (sitemesh 환경설정 파일)
<excludes> : sitemesh 사용하지 않을 url패턴 넣기
<decorators> : 호출된 view 페이지와 맞는 패턴이 있다면 decorator 엘리먼트는 정의된 대로 페이지를 꾸며준다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE decorators>
<decorators defaultdir="/WEB-INF/views">
<!-- Any urls that are excluded will never be decorated by Sitemesh -->
<excludes>
<pattern>/admin/login.do</pattern>
<pattern>/admin/*Include.do</pattern>
</excludes>
<!-- admin -->
<decorator name="admin_top" page="layout/admin/top.jsp" />
<decorator name="admin_sidebar" page="layout/admin/sidebar.jsp" />
<decorator name="admin_default" page="layout/admin/default.jsp">
<pattern>/admin/*.do</pattern>
</decorator>
<!-- front -->
<decorator name="top" page="layout/front/top.jsp" />
<decorator name="sidebar" page="layout/front/sidebar.jsp" />
<decorator name="default" page="layout/front/default.jsp">
<pattern>/*.do</pattern>
</decorator>
<!-- preview -->
<decorator name="preview_default" page="layout/preview/default.jsp">
<pattern>/preview/*.do</pattern>
</decorator>
</decorators>
참고사이트
'dev > 기타' 카테고리의 다른 글
eclipse 프로젝트명 변경 (0) | 2021.02.03 |
---|---|
[맥북] Homebrew 를 통해 node, npm, yarn 설치하기 (0) | 2021.01.28 |
쿠키(cookie)와 세션(session) (0) | 2021.01.12 |
블로그에 소스코드 간편히 넣기 (color scripter) (0) | 2021.01.11 |