将 sitemesh_[version].jar 包加到 WEB-INF\lib 下
2. 在 web.xml 中增加
< filter >
< filter-name > sitemesh </ filter-name >
< filter-class > com.opensymphony.module.sitemesh.filter.PageFilter </ filter-class >
</ filter >
< filter-mapping >
< filter-name > sitemesh </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
表示对系统中所有 url 请求均使用 sitemesh Filter 进行拦截。
3. 在 WEB-INF 下配置 sitemesh.xml 和 decorator.xml 配置文件。
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=ISO-8859-1"
class ="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
</ page-parsers >
< decorator-mappers >
<!-- for print -->
< mapper class ="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper" >
< param name ="decorator" value ="printable" />
< param name ="parameter.name" value ="printable" />
< param name ="parameter.value" value ="true" />
</ mapper >
< mapper class ="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper" >
< param name ="config" value ="${decorators-file}" />
</ mapper >
</ decorator-mappers >
</ sitemesh >
Decorator.xml
< decorators defaultdir ="/decorators" >
< excludes >
< pattern > /demos/* </ pattern >
< pattern > /resources/* </ pattern >
< pattern > /test* </ pattern >
< pattern > /FCKeditor/* </ pattern >
</ excludes >
<!-- decorator for print(has parameter: printable=true) -->
< decorator name ="printable" page ="decPrintable.jsp" />
< decorator name ="login" page ="decLogin.jsp" >
< pattern > *login* </ pattern > <! —url 映射模式 -- >
</ decorator >
< decorator name ="default" page ="decDefault.jsp" >
< pattern > /* </ pattern > <! — 缺省的装饰器 -- >
</ decorator >
</ decorators >
在 sitemesh.xml 中配置了两个 DecoratorMapper : PrintableDecoratorMapper 和 ConfigDecoratorMapper 。
PrintableDecoratorMapper 是供打印专用,在 url 后加上 printable=true 即会使用 decorator.xml 中指定的 printable 装饰器来对页面进行装饰,一般来说打印页面是只需要打印本页面的内容,其余的如头、脚、导航栏、左右菜单等是不需要打印的,通过装饰器可以轻松实现打印页面的过滤。
4. 创建一个装饰器 JSP 页面,我建议所有装饰器页面放到 decorators 目录,并且以 dec[ 功能 ].jsp 作为命名方式,如 decPrintable.jsp 、 decDefault.jsp 。
下面是一个装饰器的代码:
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN "
" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
<%-- Include common set of tag library declarations for each layout --%>
<% @ include file = " /common/taglibs.jsp " %>
< html xmlns = " http://www.w3.org/1999/xhtml " xml:lang = " en " >
< head >
< decorator:head />
</ head >
< body
< decorator:getProperty property = " body.id " writeEntireProperty = " true " />
< decorator:getProperty property = " body.onload " writeEntireProperty = " true " />
< decorator:getProperty property = " body.onunload " writeEntireProperty = " true " />
>
<% @ include file = " /common/header.jsp " %>
< h1 >< decorator:getProperty property = " page.heading " /></ h1 >
<% @ include file = " /common/messages.jsp " %>
< decorator:body />
< jsp:include page = " /common/footer.jsp " />
</ body >
</ html >
注意其 <decorator:…> 标签,这些标签将被装饰的 page 页面的相应内容作为属性传入。 Page 页面的相关内容将放在 decorator 标签所指定的位置。
Title :标题
Head :头部,一般是公共的 js 、 css 及 meta 。
Body :被装饰的 page 的主体内容。
5 、 Sitemesh 通过在 sitemesh.xml 中配置 DecoratorMapper 配置映射器,通过在 decorator.xml 中配置装饰器文件及其匹配方式。当有页面需要输出到客户端时,将根据这些配置选择相应的装饰器来进行装饰,将装饰结果返回给客户界面。
4. 参考资料
关于 Sitemesh 的 api 及详细使用说明可以参看其官方网站
http://www.opensymphony.com/sitemesh
分享到:
相关推荐
Sitemesh的配置文件位于项目的`/WEB-INF/`目录下,用于定义哪些URL需要应用装饰器以及哪些不需要。 ```xml <sitemesh> *" decorator="/WEB-INF/views/decorators/decorator.html"/> *" exclude="true"/> </...
- `sitemesh.xml`: SiteMesh配置文件。 - `web.xml`: Web部署描述文件。 3. **项目初始化命令:** - `mvn eclipse:eclipse`: 生成Eclipse工程文件。 - `mvn package`: 打包项目,生成`.war`文件。 - 运行命令...
然后,可以在`web.xml`中配置Sitemesh过滤器,并在Spring配置文件中配置Freemarker视图解析器。 下面是一个简单的例子,展示了如何在Spring MVC项目中同时使用Sitemesh和Freemarker。 **`web.xml`配置** ```xml ...
4. **配置(Configuration)**: SiteMesh的配置文件(通常为`sitemesh.xml`)用于设置装饰策略,包括哪些URL需要被装饰,以及使用哪个装饰器等。 **使用步骤** 1. **集成SiteMesh**: 将SiteMesh的JAR文件添加到...
- `sitemesh.properties`是Sitemesh的主要配置文件,可以在这里设置默认装饰器、是否启用调试模式等。 6. **实际应用** - 在`sitemesh-demo01`项目中,可以看到一个简单的例子,包括装饰器模板、被装饰的页面和...
3. **配置文件(sitemesh.properties)**:sitemesh的配置文件用于定义装饰策略,包括哪些URL应该被装饰,以及使用哪个模板进行装饰。 4. **模板语言(Decorator Templates)**:sitemesh支持自定义模板语言,允许...
2. **配置Sitemesh**:接下来,需要在Spring MVC的配置文件中启用Sitemesh。这可以通过创建一个DelegatingFilterProxy bean并指向Sitemesh的过滤器实现。例如: ```xml <filter-name>sitemesh <filter-class>...
在提供的压缩包中,"SiteMesh"可能包含了Sitemesh的源码、文档、示例项目或者其他配置文件。通过研究这些资源,你可以更好地理解和学习如何在实际项目中应用Sitemesh。学习和掌握Sitemesh能让你在开发Java Web应用时...
- **自定义装饰规则**:开发者可以通过编程或者配置文件定义装饰规则,决定哪些页面应该被装饰,以及使用哪个装饰模板。 - **可扩展性**:Sitemesh3提供了插件机制,允许开发者扩展其功能,例如实现自定义的装饰...
在提供的压缩包文件`sitemesh3`中,可能包含了Sitemesh3的库文件、示例项目的源代码、配置文件和其他相关资源。通过学习和分析这些文件,你可以更深入地理解Sitemesh3的工作原理和使用方法,进一步提升你在Web开发中...
1. **安装SiteMesh**:这通常包括下载SiteMesh的库文件,将其添加到你的项目构建路径中(例如,如果你使用Maven,可以在pom.xml中添加对应的依赖)。 2. **配置SiteMesh**:在web.xml中配置SiteMesh Filter是必要的...
- decorators.xml:这是一个配置文件,用于配置SiteMesh的装饰器和装饰规则,如指定哪个装饰器应用到哪些页面上。 ***Mesh配置: - 在web.xml中配置SiteMesh的Filter和Filter-Mapping,确保SiteMesh能够拦截所有Web...
1. **配置Sitemesh**:首先,需要在Web应用的`web.xml`配置文件中添加Sitemesh的过滤器。这个过滤器会在每个请求处理之前和之后执行,对页面进行装饰。 2. **创建Freemarker模板**:然后,创建Freemarker模板文件,...
1. `WEB-INF`: 这个目录下通常会包含`web.xml`配置文件和`decorators.xml`装饰器配置文件。 2. `WEB-INF/classes`或`WEB-INF/lib`: 这些目录存放着项目的类文件或依赖库。 3. `jsp`或`html`文件:这些是实际的页面...
这通常在web.xml文件中完成,你需要设置过滤器来启动Sitemesh,并指定哪些页面需要被装饰。默认情况下,Sitemesh会装饰所有HTML内容,但你可以通过配置过滤器来指定特定的URL模式。 然后,创建装饰器模板。装饰器是...
要使用Sitemesh,开发者需要了解其配置文件(通常为`sitemesh.xml`),以及如何编写装饰器模板。此外,还需要熟悉如何在JSP或Servlet中使用`@decorator`注解或者`<%@ page decorator="..." %>`指令来指定装饰器。 ...
2. **配置web.xml**:在`WEB-INF/web.xml`中,我们需要配置Sitemesh过滤器。添加以下代码段,使Sitemesh能够拦截请求并应用装饰: ```xml <filter-name>...
1. **引入依赖**:首先,需要在项目中添加Spring MVC、Sitemesh和Velocity的相关依赖库,这通常通过Maven或Gradle的配置文件完成。 2. **配置Spring MVC**:在Spring的配置文件中,配置Spring MVC的...
`sitemesh.conf` 是 Sitemesh 的核心配置文件,它定义了装饰器的选择规则、装饰器的布局以及一些其他选项。例如,我们可以指定默认的装饰器模板: ``` ``` 3. **创建装饰器模板**: 装饰器(Decorator)是 ...