5、 在WEB-INF下面建立文件sitemesh.xml,用来告诉框架,什么类型需要用到什么解析器,用到什么映射器,(这个文件可以不加)代码如下
<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml" />
<excludes file="${decorators-file}" />
<page-parsers>
<parser default="true"
class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
<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.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}" />
</mapper>
</decorator-mappers>
</sitemesh>
SiteMesh有一个概念,叫做修饰器映射,实现这个概念的接口是DecoratorMapper(有init()和getDecorator()方法)。映射器在sitemesh.xml里声明。在sitemesh.xml文件里,每一个映射器都是它上一个映射器的父映射。当SiteMesh需要一个修饰器来修饰页面的时候,会在sitemesh.xml里查找映射器,生成找到的第一个映射器的实例并调用getDecorator()方法,在这个方法里尝试查找针对那个页面的修饰器。如果找到了就返回;否则,调用父映射器的getDecorator()方法,反复进行这个过程,直到找到正确的修饰器。
6、web目录下建一个index.jsp
<%@ page contentType="text/html; charset=GBK"%>
<html>
<head>
<title>index</title>
</head>
<body>
<p>这是index页面的body.</p>
</body>
</html>
7、访问index.jsp
更多的实例可以下载官方的实例。
https://sitemesh.dev.java.net/files/documents/887/129894/sitemesh-example.war
8、再来说说第一节提到的例子,百度和google在一起的例子
例子在上面简单的实例上,做以下几件事。
1)、添加一个panel适配器,修改decorators.xml如下
<!-- 指定 main装饰器,该装饰器使用main.jsp页面 -->
<decorator name="main" page="main.jsp">
<!-- main装饰器装饰所有的页面 -->
<pattern>/*</pattern>
</decorator>
<!—_不会被装饰的路径-->
<excludes>
<pattern>/js/*</pattern>
<pattern>/images/*</pattern>
<pattern>/css/*</pattern>
</excludes>
<!—- 没有指定pattern的适配器,不会自动装饰页面 ,可以通过page:applyDecorator来指定 -->
<decorator name="panel" page="panel.jsp"/>