SiteMesh框架是OpenSymphony团队开发的一个非常优秀的页面装饰器框架,它通过对用户请求进行过滤,并对服务器向客户端响应也进行过滤,然后给原始页面加入一定的装饰(header,footer等),然后把结果返回给客户端。通过SiteMesh的页面装饰,可以提供更好的代码复用,所有的页面装饰效果耦合在目标页面中,无需再使用include指令来包含装饰效果,目标页与装饰页完全分离,如果所有页面使用相同的装饰器,可以是整个Web应用具有统一的风格。
SiteMesh使用很简单,具体有以下几步:
1) 拷贝 sitemesh-2.3.jar 到 [web-app]/WEB-INF/lib.
2) 在[web-app]/WEB-INF/新建一个decorators.xml文件,包含以下内容
<decorators>
</decorators>
3)可选项,在[web-app]/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.FastPageParser"/>
<parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.FastPageParser"/>
<parser content-type="text/html;charset=gbk" class="com.opensymphony.module.sitemesh.parser.FastPageParser"/>
</page-parsers>
<decorator-mappers>
<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}"/>
</mapper>
</decorator-mappers>
</sitemesh>
4)在[web-app]/WEB-INF/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>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
一个简单的例子
1)在[web-app]下创建一个decorators文件夹,在该文件下再创建一个装饰页面main.jsp,内容如下:
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<html>
<head>
<title><decorator:title default="第一个装饰器页面"/></title>
<decorator:head/>
</head>
<body>
SiteMesh快速入门<hr>
<decorator:body />
<hr>
<div style="font:9pt" align="center">SiteMesh快速入门</div>
</body>
</html>
2)创建一个目标页面index.jsp,内容如下:
<%@ page contentType="text/html; charset=GBK"%>
<html>
<head>
<title>第一次使用SiteMesh</title>
</head>
<body>
<h3>使用SiteMesh有什么好处?</h3>
<li>目标页面和装饰页面完全分离</li>
<li>做到真正的页面复用</li>
<li>更容易实现统一的网站风格</li>
</body>
</html>
3)在decorators.xml中加入以下内容:
<?xml version="1.0" encoding="GBK"?>
<decorators defaultdir="/decorators">
<!-- 此处用来定义不需要过滤的页面 -->
<exculdes>
</exculdes>
<!-- 用来定义装饰器要过滤的页面 -->
<decorator name="main" page="main.jsp">
<pattern>/*</pattern>
</decorator>
</decorators>
4)发布运行,结果如下:
- 大小: 16.4 KB
分享到:
相关推荐
**Sitemesh装饰器入门** Sitemesh 是一个开源的 Web 应用程序框架,它主要用来帮助开发者实现页面布局和装饰功能。Sitemesh 的核心概念是“装饰器”,这个概念源自于软件设计模式中的装饰者模式。通过使用 Sitemesh...
2. **灵活性**:支持多种装饰模式,可以为不同类型的页面使用不同的装饰器。 3. **可扩展性**:可以通过自定义Filter或使用表达式语言(EL)来控制装饰过程。 4. **与Struts、Spring MVC等框架兼容**:Sitemesh可以...
4. **设置页面内容**:对于每个需要装饰的页面,可以使用特殊的注释来指示Sitemesh如何将内容插入到模板中。例如,`<@s.content/>`表示将当前页面的内容插入到模板的指定位置。 5. **运行与测试**:在MyEclipse中...
本案例涉及的是将sitemesh2与velocity框架进行集成,以实现页面装饰功能。sitemesh是一款开源的Web页面布局和装饰框架,而velocity则是一个轻量级的Java模板引擎,用于生成动态网页内容。下面我们将深入探讨这个集成...
同时,SiteMesh允许自定义装饰器映射器(Decorator Mappers),用于控制哪些页面使用哪个装饰器,以及如何解析页面内容。 7. 请求和响应处理: SiteMesh拦截请求和响应,它能够处理页面的request和response,对响应...
当用户访问`index.jsp`时,Sitemesh会自动使用配置好的装饰器页面对其进行包装,从而呈现出一个完整的页面。 #### 三、装饰器(Decorator)概念及其优势 装饰器模式是一种常用的软件设计模式,用于动态地给一个...
**Sitemesh** 是一个广泛使用的开源Web应用框架,它主要功能是提供页面布局和装饰功能,用于统一网站的外观和感觉。Sitemesh通过在Web应用中引入“母版”(Master Page)的概念,使得开发者可以轻松地创建一致性的...
- **标记内容页面**:在需要被装饰的JSP页面中,使用特殊的指令或标签来指示Sitemesh如何处理内容。 4. **示例资源** - **sitemesh资料整理.chm**:这可能是一个包含Sitemesh详细信息的CHM帮助文件,提供了框架的...
sitemesh 装饰页面技术.
Sitemesh 是一个流行的页面布局和装饰框架,它可以为我们的应用程序提供统一的外观和感觉。Tiles2 虽然功能强大,但在某些情况下,Sitemesh 提供了更简单、更轻量级的解决方案。 首先,让我们理解 Spring MVC 和 ...
Sitemesh是一款强大的Web页面布局和装饰框架,它主要用于帮助开发者实现网站的统一外观和感觉。这个框架的主要功能是将页面的主体内容与页眉、页脚、侧边栏等通用部分分离,使得在大量网页中保持一致的设计风格变得...
4. **应用装饰**:通过在JSP页面中使用特殊的注解(例如`<@sitemesh/page>`),或者在Servlet中使用`PageDecorator`接口,可以指示SiteMesh对哪些页面进行装饰。 5. **自定义装饰策略**:如果你的项目有特殊需求,...
**第五步:创建被装饰页面** 最后,创建一个具体的页面,例如`/index.jsp`,并将其标记为需要装饰的页面。 ```jsp ;charset=GBK" %> <title>AgentTest 本页只有一句,就是本句. ``` 当用户访问`/index....
Sitemesh 是一个开源的网页布局和装饰框架,它主要负责处理Web应用程序的页面布局,使得开发者可以集中精力于应用的核心功能,而不用过多关注页面样式的一致性和美观性。Sitemesh 提供了一种优雅的方式来组织和装饰...
如果需要对某些特定页面不应用装饰,或者只对特定部分进行装饰,可以使用 `excludes` 和 `includes` 属性在 `web.xml` 中配置 SiteMesh 过滤器。 9. **优化与性能** SiteMesh 通常对性能的影响很小,但可以通过...
3. **页面内容(Page Content)**: 页面内容是实际的业务逻辑页面,它们被SiteMesh装饰器包围,只需关注自身的业务逻辑,无需关心页面布局。 4. **配置(Configuration)**: SiteMesh的配置文件(通常为`sitemesh....
为了演示Sitemesh的功能,我们准备两个页面:一个是内容页面(`demo.html`),另一个是装饰页面(`decorator.html`)。 - **demo.html**: ```html <!DOCTYPE html> 内容页的标题 内容页的body部分 ...
4. **标记待装饰页面**:在待装饰的JSP页面中添加特定的注释或指令,告诉Sitemesh如何处理这些页面。 5. **内容和装饰模板的结合**:Sitemesh会自动处理这些标记,将页面内容插入到模板中相应的位置。 **四、...
这两个tld文件让开发者可以方便地在JSP页面中使用SiteMesh的自定义标签,进行页面布局和装饰操作。 下面详细解释这两个tld文件的用途: 1. `sitemesh-page.tld`: 这个文件定义了一个名为`<decorator:page>`的标签...