Sitemesh3使用及配置

简介: Sitemesh3使用及配置


  1. Sitemesh是一个网页布局和修饰的框架,基于Servlet中的 Filter,类似于 ASP.NET 中的‘母版页’技术。相关类似技术:Apache Tiles。 官网:http://wiki.sitemesh.org/wiki/display/sitemesh/Home
  2. 下载
    ① GitHub 地址:https://github.com/sitemesh/sitemesh3
    ② maven:
<dependency>
   <groupId>org.sitemesh</groupId>
   <artifactId>sitemesh</artifactId>
   <version>3.0.0</version>
</dependency>

3 . 配置 Sitemesh 3 过滤器

在 web.xml 中添加 Sitemesh Filter

<web-app>
  ...
  <filter>
    <filter-name>sitemesh</filter-name>
    <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
  1. 准备两个页面:demo.html 和 decorator.html
    ① demo.html - “被装饰的页面”,实际要呈现的内容页。
<!DOCTYPE html>
<html>
<head>
    <title>内容页的标题</title>
</head>
<body>
    内容页的body部分
</body>
</html>

② decorator.html - “装饰页面”,所谓的“母版页”。

<!DOCTYPE html>
<html>
<head>
<title>
    <sitemesh:write property='title' /> - ltcms
</title>
<sitemesh:write property='head' />
</head>
<body>
    <header>header</header>
    <hr />
    demo.html的title将被填充到这儿:
    <sitemesh:write property='title' /><br />
    demo.html的body将被填充到这儿:
    <sitemesh:write property='body' />
    <hr />
    <footer>footer</footer>
</body>
</html>
  1. 添加 /WEB-INF/sitemesh3.xml
<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
    <!-- 指明满足“/*”的页面,将被“/WEB-INF/views/decorators/decorator.html”所装饰 -->
    <mapping path="/*" decorator="/WEB-INF/views/decorators/decorator.html" />
    <!-- 指明满足“/exclude.jsp*”的页面,将被排除,不被装饰 -->
    <mapping path="/exclude.jsp*" exclue="true" />
</sitemesh>
  1. 访问
    访问 demo.html 页面,实际效果如下:
  • sitemesh3.xml 配置详解
<sitemesh>
    <!--默认情况下,
        sitemesh 只对 HTTP 响应头中 Content-Type 为 text/html 的类型进行拦截和装饰,
        我们可以添加更多的 mime 类型-->
  <mime-type>text/html</mime-type>
  <mime-type>application/vnd.wap.xhtml+xml</mime-type>
  <mime-type>application/xhtml+xml</mime-type>
  ...
  <!-- 默认装饰器,当下面的路径都不匹配时,启用该装饰器进行装饰 -->
  <mapping decorator="/default-decorator.html"/>
  <!-- 对不同的路径,启用不同的装饰器 -->
  <mapping path="/admin/*" decorator="/another-decorator.html"/>
  <mapping path="/*.special.jsp" decorator="/special-decorator.html"/>
  <!-- 对同一路径,启用多个装饰器 -->
  <mapping>
    <path>/articles/*</path>
    <decorator>/decorators/article.html</decorator>
    <decorator>/decorators/two-page-layout.html</decorator>
    <decorator>/decorators/common.html</decorator>
  </mapping>
  <!-- 排除,不进行装饰的路径 -->
  <mapping path="/javadoc/*" exclue="true"/>
  <mapping path="/brochures/*" exclue="true"/>
  <!-- 自定义 tag 规则 -->
  <content-processor>
    <tag-rule-bundle class="com.something.CssCompressingBundle" />
    <tag-rule-bundle class="com.something.LinkRewritingBundle"/>
  </content-processor>
  ...
</sitemesh>
  • 自定义 tag 规则
    Sitemesh 3 默认只提供了 body,title,head 等 tag 类型,我们可以通过实现 TagRuleBundle 扩展自定义的 tag 规则:
public class MyTagRuleBundle implements TagRuleBundle {
    @Override
    public void install(State defaultState, ContentProperty contentProperty,
            SiteMeshContext siteMeshContext) {
        defaultState.addRule("myHeader", new ExportTagToContentRule(contentProperty.getChild("myHeader"), false));
    }
    @Override
    public void cleanUp(State defaultState, ContentProperty contentProperty,
            SiteMeshContext siteMeshContext) {
    }
}

最后在 sitemesh3.xml 中配置即可:

 <content-processor>
     <tag-rule-bundle class="com.lt.common.ext.sitemesh3.MyTagRuleBundle" />
 </content-processor>


相关文章
|
11月前
|
前端开发 JavaScript Java
Web.xml - Servlet与Filter的url-pattern
Web.xml - Servlet与Filter的url-pattern
93 8
|
Java Spring
15dwr - DWR 与 Spring整合
15dwr - DWR 与 Spring整合
57 0
|
6月前
springmvc web.xml文件配置中文编码过滤器
springmvc web.xml文件配置中文编码过滤器
|
Java 容器
05dwr - web.xml配置(日志配置)
05dwr - web.xml配置(日志配置)
43 0
|
XML 前端开发 JavaScript
SpringMVC之web.xml,了解必要配置项
SpringMVC之web.xml,了解必要配置项
245 0
SpringMVC之web.xml,了解必要配置项
|
Web App开发 Java 数据格式
Spring项目的配置文件们(web.xml context servlet springmvc)
我们的spring项目目前用到的配置文件包括1--web.xml文件,这是java的web项目都必须有的,我理解它是servlet的配置文件,也就是说,与spring无关。即使你开发的是一个纯粹jsp页面的web项目,你也必须配置这个文件。
4786 0
|
XML Java 数据格式
|
容器 应用服务中间件
servlet与filter的加载顺序详解
项目:3个filter,3个servlet,匹配的url路径/hello。   情况1:servlet没加情况(web.xml配置顺序:first filter,second filter,third filter,first servlet,second servlet,thi...
2204 0
|
前端开发
【SpringMVC】SpringMVC配置拦截器 mvc:exclude-mapping 报错
转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 今天写SpringMVC的拦截器的时候,遇到这样一个错误, Element mvc:exclude-mapping is not allowed here. 经过一番搜索,找到了原因。
2071 0