一、SiteMesh简介
SiteMesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。 它不仅仅能处理动态的内容,如jsp,php,asp等产生的内容,它也能处理静态的内容,如htm的内容,使得它的内容也符合你的页面结构的要求。甚至于它能将HTML文件象include那样将该文件作为一个面板的形式嵌入到别的文件中去。所有的这些,都是GOF的Decorator模式的最生动的实现。尽管它是由java语言来实现的,但它能与其他Web应用很好地集成。与传统区别如下图:
SIteMesh官方地址:http://www.opensymphony.com/sitemesh/index.html
SIteMesh官方下载:http://www.opensymphony.com/sitemesh/download.html
SIteMesh 2.3下载:http://www.javauu.com/downloads/resource/sitemesh-2.3.zip
二、SiteMesh原理
SiteMesh框架是OpenSymphony团队开发的一个非常优秀的页面装饰器框架,它通过对用户请求进行过滤,并对服务器向客户端响应也进行过滤,然后给原始页面加入一定的装饰(header,footer等),然后把结果返回给客户端。通过SiteMesh的页面装饰,可以提供更好的代码复用,所有的页面装饰效果耦合在目标页面中,无需再使用include指令来包含装饰效果,目标页与装饰页完全分离,如果所有页面使用相同的装饰器,可以是整个Web应用具有统一的风格。
三、SiteMesh简单例子
接下来通过一个SiteMesh简单例子来了解SiteMesh的功能:
- 将sitemesh-2.3.jar放 到 [web-app]/WEB-INF/lib目录下;
- 在[web-app]/WEB-INF/新建一个decorators.xml文件,包含以下内容:
- <?xml version="1.0" encoding="utf-8"?>
- <decorators defaultdir="/decorators">
- <!-- 此处用来定义不需要过滤的页面 -->
- <excludes>
- </excludes>
- <!-- 用来定义装饰器要过滤的页面 -->
- <decorator name="main" page="main.jsp">
- <pattern>/*</pattern>
- </decorator>
- </decorators>
- <?xml version="1.0" encoding="utf-8"?>
- <decorators defaultdir="/decorators">
- <!-- 此处用来定义不需要过滤的页面 -->
- <excludes>
- </excludes>
- <!-- 用来定义装饰器要过滤的页面 -->
- <decorator name="main" page="main.jsp">
- <pattern>/*</pattern>
- </decorator>
- </decorators>
- 在[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>
- </filter-mapping>
- <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>
- 在[web-app]下创建一个decorators文件夹,在该文件下再创建一个装饰页面main.jsp,包含以下内容:
- <%@ page language="java" contentType="text/html; charset=utf-8"
- pageEncoding="utf-8"%>
- <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <!-- 第一个装饰页面 -->
- <head>
- <!-- 从被装饰页面获取title标签内容,并设置默认值-->
- <title><decorator:title default="默认title"/></title>
- <!-- 从被装饰页面获取head标签内容 -->
- <decorator:head/>
- </head>
- <body>
- <h2>SiteMesh装饰header</h2>
- <hr />
- <!-- 从被装饰页面获取body标签内容 -->
- <decorator:body />
- <hr />
- <h2>SiteMesh装饰footer</h2>
- </body>
- </html>
- <%@ page language="java" contentType="text/html; charset=utf-8"
- pageEncoding="utf-8"%>
- <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <!-- 第一个装饰页面 -->
- <head>
- <!-- 从被装饰页面获取title标签内容,并设置默认值-->
- <title><decorator:title default="默认title"/></title>
- <!-- 从被装饰页面获取head标签内容 -->
- <decorator:head/>
- </head>
- <body>
- <h2>SiteMesh装饰header</h2>
- <hr />
- <!-- 从被装饰页面获取body标签内容 -->
- <decorator:body />
- <hr />
- <h2>SiteMesh装饰footer</h2>
- </body>
- </html>
- 在[web-app]下创建被装饰页面index.jsp,包含以下内容:
- <%@ page language="java" contentType="text/html; charset=utf-8"
- pageEncoding="utf-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <!-- 第一个被装饰(目标)页面 -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>被装饰(目标)页面title</title>
- </head>
- <body>
- <h4>被装饰(目标)页面body标签内内容。</h4>
- <h3>使用SiteMesh的好处?</h3>
- <ul>
- <li>被装饰(目标)页面和装饰页面完全分离。</li>
- <li>做到真正的页面复用,一个装饰页面装饰多个被装饰(目标)页面。</li>
- <li>更容易实现统一的网站风格。</li>
- <li>还有。。。</li>
- </ul>
- </body>
- </html>
- <%@ page language="java" contentType="text/html; charset=utf-8"
- pageEncoding="utf-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <!-- 第一个被装饰(目标)页面 -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>被装饰(目标)页面title</title>
- </head>
- <body>
- <h4>被装饰(目标)页面body标签内内容。</h4>
- <h3>使用SiteMesh的好处?</h3>
- <ul>
- <li>被装饰(目标)页面和装饰页面完全分离。</li>
- <li>做到真正的页面复用,一个装饰页面装饰多个被装饰(目标)页面。</li>
- <li>更容易实现统一的网站风格。</li>
- <li>还有。。。</li>
- </ul>
- </body>
- </html>
- 运行结果如下图:
四、总结
从以上的例子,可以看出通过SiteMesh装饰,不需要在每个目标页面中将header和footer等共同文件 include进去,被装饰(目标)页面和装饰页面完全分离。本文只对SiteMesh做一个简单的介绍,SiteMesh可以 Velocity,FreeMarker等开源模板工具结合使用,降低页面开发复杂度。
相关推荐
**SiteMesh介绍** SiteMesh是一个基于Web的页面布局和装饰框架,主要目的是为大型Web应用程序提供一致的页面布局和外观。它使用了设计模式中的Decorator模式,能够将页面的装饰部分(如头部、底部、侧边栏等)与...
- **sitemesh2003.ppt**:这可能是一个PowerPoint演示文稿,包含了2003年的Sitemesh介绍或教程。 - **sitemesh.rar** 和 **sitemesh-2.4.1(1).zip**、**sitemesh-2.4.1.zip**:这些是Sitemesh的源码或者不同版本的...
7. **调试和测试**:文档中还会介绍如何查看 SiteMesh 的日志输出,以及如何在开发阶段快速检查装饰效果。 通过研究这个"siteMesh demo+文档",开发者可以快速掌握SiteMesh的基本使用,同时也能了解其在实际项目中...
在参考链接中提到的博客文章(http://blog.csdn.net/thc1987/article/details/6913416),作者详细介绍了如何配置Sitemesh3以及在实际项目中应用它的步骤,包括下载和引入依赖、配置过滤器、设置装饰规则以及处理...
此外,提供的"简单文档说明"可能详细介绍了如何设置和运行这个例子,包括安装Sitemesh库、配置Web应用、创建装饰器和测试页面等步骤。阅读这份文档可以帮助初学者快速上手。 总的来说,Sitemesh是一个强大的工具,...
### Sitemesh布局知识点汇总 #### 一、Sitemesh简介 Sitemesh是一个非常实用且功能强大的Web页面...通过上述介绍,我们不难发现Sitemesh在Web页面布局和装饰方面具有独特的优势,值得广大Web开发者深入了解和运用。
此教程基于SiteMesh官方文档的翻译版本,主要介绍了如何在Web项目中集成并使用SiteMesh,并特别关注了与Freemarker模板引擎的结合。 #### 二、安装与配置 ##### 1. 创建Web项目 - **普通Web项目**:首先创建一个...
8. **文档和实例**:在提供的资料中,文档将详细介绍如何安装、配置和使用SiteMesh 2.3,实例则可以帮助初学者快速理解和上手实践。 9. **依赖库(Lib)**:SiteMesh 2.3 包含了运行所需的库文件,确保了在各种环境...
- `README.md`:项目介绍和使用指南 通过阅读这些源代码,我们可以了解到Sitemesh2的内部工作机制,包括如何处理HTTP请求、解析页面、装饰策略的实现等。同时,测试代码可以帮助我们验证其功能的正确性。 总结来说...
本篇文章将详细介绍如何在项目中初步整合Sitemesh,以便实现模块化的设计。 ### 一、Sitemesh 概述 1. **装饰模式**:Sitemesh 使用装饰模式,通过拦截HTTP请求,动态地将页面内容与装饰模板结合,形成最终的HTML...
1. **版本介绍**: SiteMesh 2.4.1和2.4.2是SiteMesh的两个稳定版本,提供了对Java Servlet API的兼容性更新和一些bug修复。2.4.2作为2.4.1的后续版本,可能包含了更多的改进和问题修复。 2. **工作原理**: ...
* Sitemesh介绍:Sitemesh是一个基于Java的界面设计框架,提供了一个灵活、可扩展的界面设计架构。 * Sitemesh的特点:Sitemesh的特点包括灵活、可扩展、易于维护等。 十、系统测试 * 系统测试的重要性:系统测试...
- `README.txt`: 提供了关于 Sitemesh 的基本介绍、安装和使用指南,是快速入门的参考文档。 - `LICENSE.txt`: 描述了 Sitemesh 的许可协议,通常为 Apache 2.0 或 GPL,表明软件的使用权限和限制。 - `build.xml...
在构建Web应用程序时,我们经常需要一套强大的布局和模板管理工具来提高开发效率和应用的统一性。...以上就是关于如何在Spring MVC和Spring Web Flow项目中使用Sitemesh替换Tiles2的详细步骤和优势介绍。
下面将详细介绍这四个组件及其在开发中的作用。 1. **WebWork**:WebWork是一个基于Action的MVC(Model-View-Controller)框架,它的核心是请求驱动的Action,通过ActionServlet来处理HTTP请求。WebWork提供了强大...
SiteMesh是用来管理页面不觉非常有效的一个框架工具,这个PPT介绍了sitemesh的主要用法,当然如果能结合官网学习效果会更好
下面将分别详细介绍这些技术以及它们在整合中的作用。 1. SpringMVC: SpringMVC是Spring框架的一部分,是一个用于构建Web应用的轻量级MVC框架。它提供了一个分层架构,允许开发者将业务逻辑、数据访问和用户界面...
1.2.1 标签库介绍 13 1.2.2 拦截器应用目的 14 1.2.3 FilterDispatcher和Action概述 14 1.2.4 Struts2配置文件处理 15 1.2.5 OGNL介绍和类型转换目的 15 1.2.6 进行校验 16 1.2.7 Web项目国际化根由 16 1.2.8 ...