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