siteMesh 学习
SiteMesh 是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的。
SiteMesh是基于Servlet的filter的,即过滤流。它是通过截取response,并进行装饰后再交付给客户。
第一步:
下载sitemesh3.0à sitemesh-3.0.zip
将其中disk文件下的sitemesh-3.0-alpha-2.jar导入/WEB-INF/lib 目录下
第二步:
新建装饰页 decorator.jsp 一般为模版
修改:
<sitemesh:writeproperty='title'></sitemesh:write></title>
<sitemesh:writeproperty='head'></sitemesh:write></title>
<sitemesh:writeproperty='body'></sitemesh:write></title>
第三步:
新建被装饰页
第四步:
新建配置文件(sitemesh3.xml )
<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
<mapping path="/*" decorator="/decorator.jsp"/>
</sitemesh>
第五步:
Web.Xml 添加过滤器设置
<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>
备注:添加空的代码
第一步:新建AddTagSitemesh.java
packagecom.lbs.util;
importorg.sitemesh.SiteMeshContext;
importorg.sitemesh.content.ContentProperty;
importorg.sitemesh.content.tagrules.TagRuleBundle;
importorg.sitemesh.content.tagrules.html.ExportTagToContentRule;
importorg.sitemesh.tagprocessor.State;
public class AddTagSitemesh implements TagRuleBundle {
@Override
public void install(State defaultState, ContentProperty contentProperty,
SiteMeshContext siteMeshContext) {
defaultState.addRule("first",newExportTagToContentRule(contentProperty.getChild("first"),false));//添加一个空 first
defaultState.addRule("second",new ExportTagToContentRule(contentProperty.getChild("second"),false)); //添加一个空 second
}
@Override
public void cleanUp(State defaultState, ContentProperty contentProperty,
SiteMeshContext siteMeshContext) {
}
}
第二步:sitemesh.xml中的sitemesh标签中添加
<content-processor>
<tag-rule-bundle
<class="com.lbs.util.AddTagSitemesh"/>
</content-processor>