1、簡介
SiteMesh 是一個網頁佈局和修飾的框架,利用它能夠將網頁的內容和頁面結構分離,以達到頁面結構共享的目的。css
官網:http://wiki.sitemesh.org/wiki/display/sitemesh/Homehtml
2、配置
一、下載jar包
自行百度吧,這裏就很少說明。
web
二、web.xml配置
<!-- sitemesh 過濾器 注意:若是和其餘技術一塊兒使用好比springmvc必定要注意順序-->
<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>/*</url-pattern>
</filter-mapping>
三、在WEB-INF/新建一個decorators.xml文件,包含如下內容:
<?xml version="1.0" encoding="UTF-8"?>
<decorators >
<decorator name="front" page="/common/front"> //前臺頁面母版頁
<pattern>/front/*</pattern>
</decorator>
<decorator name="admin" page="/common/admin"> //後臺頁面母版頁
<pattern>/admin/*</pattern>
</decorator>
<excludes> //那些文件不使用母版頁
<pattern>*.js</pattern>
<pattern>*.css</pattern>
<pattern>*.gif</pattern>
<pattern>*.jpg</pattern>
</excludes>
</decorators>
四、在WEB-INF/新建一個sitemesh.xml文件,包含如下內容:
<sitemesh>
<property name="decorators-file" value="/WEB-INF/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.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.PageDecoratorMapper">
<param name="property.1" value="decorator" />
<param name="property.2" value="meta.decorator" />
</mapper>
<!-- <mapper class="com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper">
<param name="config" value="${decorators-file}"/>
</mapper> -->
<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}"/>
</mapper>
</decorator-mappers>
</sitemesh>
3、使用
頁面如何使用不一樣的裝飾器: spring
<META name="decorator" content="admin"> 後臺頁面head部分添加這些。mvc
<META name="decorator" content="front"> 前臺頁面head部分添加這些。app
4、原理
SiteMesh是基於Servlet的filter的,即過濾流。它是經過截取response,並進行裝飾後再交付給客戶。框架
其中涉及到兩個名詞: 裝飾頁面(decorator page)和 "被裝飾頁面(Content page)" , 即 SiteMesh經過對Content Page的裝飾,最終獲得頁面佈局和外觀一致的頁面,並返回給客戶。webapp