Sitemesh 3 的使用及配置
来源:互联网 发布:qq飞车指挥官全29数据 编辑:程序博客网 时间:2024/06/07 04:03
本文转自 Sitemesh 3 的使用及配置
Sitemesh 是一个网页布局和修饰的框架,基于 Servlet 中的 Filter,类似于 ASP.NET 中的‘母版页’技术。参考:百度百科,相关类似技术:Apache Tiles。
官网:http://wiki.sitemesh.org/wiki/display/sitemesh/Home 。
2 . Sitemesh 3 下载
最新版本:3.0.0-SNAPSHOT
① 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>
4 . 准备两个页面:demo.html 和 decorator.html
① demo.html - “被装饰的页面”,实际要呈现的内容页。
<pre name="code" class="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>
5 . 添加 /WEB-INF/sitemesh3.xml
6 . 运行效果
访问 demo.html 页面,实际效果如下:
7 . 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>
8 . 自定义 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>
1 0
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- Sitemesh 3 的使用及配置
- WebView你真的熟悉吗?看了才知道
- qt中文乱码问题
- JAVA工程师个人职业规划
- Android Jackson、Gson、FastJson解析框架对比
- 生成二维码
- Sitemesh 3 的使用及配置
- ButterKnife 8.0.1不生效的问题
- 匈牙利算法
- 10天精通Sass 之 Sass列表函数
- ubuntu14.04LTS安装maven和eclipse的maven插件
- HTML 5新标签及含义总结
- 跟我一起写操作系统(一)——10分钟写个操作系统
- CSS中的display:inline-block
- 数据结构实验之查找一:二叉排序树