`

SiteMesh介绍

阅读更多

SiteMesh介绍 (转)

作者:by Will Iverson 03/11/2004
汉化:by AndNeT 03/24/2005

注:sitemesh,一个不错的tiles替代方案,比tiles做的更漂亮优雅。本文是sitemesh官方推荐的入门文档,本来想自己翻译的,突然发现有人先行一步了,就转过来看吧。


以前我通常使用旧式的方法来建立自己的web应用:手工排版,仔细使用每一个字节使其工作在Unicode下,同时使用make文件来适应不同的CPU……

或许现在我们可以换一种方式。

尽管我从没有感觉到需要使用assembly (CISC or RISC)来建立web应用,但也会偶尔觉得我的开发伙伴的工作相当繁琐。特别是我发现很多的开发者在痛苦的寻求一种比较好的方式来控制web应用的基本 模块:例如那些页头、页尾、导航栏、打印页面、手持设备的轻量级页面,以及其他更多的问题。到了最后,令人惊异的是大部分人都采用了落后的 includes和复制粘贴方式。

根据经验,我可以采用在 java.net 上开源的servlet 过滤器 SiteMeshn 来简单明了并优雅的解决这些问题。作为一种替代新的templating语言(XSLT)或部署您的页面到新的系统的解决方法,应用SiteMesh可以 相当容易处理你的页面,这一切只需要普通的HTML,JSP,servlet(包括Struts),以及其他常用的技术。

工作原理

SiteMesh利用了一种很少人知道的servlet规范实现了一种页面过滤器。设想一下,现在有一个简单的jsp页面用来返回当前的日期和时 间。通常这个页面请求来到应用服务器,页面被处理,最后处理结果返回到web浏览器。SiteMesh作为一个页面过滤器,在页面被处理之后,返回web 浏览器之前,对页面做了一些附加的操作。这个变化简单描述为图一和图二所示的附加步骤。


图一:普通页面处理情况


图二:SiteMesh对页面处理情况

现在看一个简单的例子。

<html></html>
<head></head>



Hello World!

<!---->

你会发现这个页面有一个title和body(类似普通的HTML页面)。你也会发现一小段JSP代码——它将会如同你期望的那样被处理。同时你可以使用任何你想使用的JSP语法和特性来替换这一小段代码。

现在来看一个简单的SiteMesh "装饰(decorator)"页面。列表2显示了一个被SiteMesh调用的JSP页面。

<!---->
<html></html>
<head></head>

<decorator:head></decorator:head>


<decorator:title default="Welcome!"></decorator:title>


<decorator:body></decorator:body>



( href="http://www.zhmy.com/?printable=true" _fcksavedurl="http://www.zhmy.com/?printable=true">printable version



查看这个装饰器(decorator),我们能看到一些有趣的东西。首先,在第一行申明了一个SiteMesh标签库。这个标签库包含了与原始页面一起工作时所需的所有东西。你能看到我们使用了两个SiteMesh的装饰标签(declared tags), <decorator:title></decorator:title> 和 <decorator:body></decorator:body>。不要惊讶于标签<decorator:title>在</decorator:title>原始页面中显示


Hello World!

<!---->

 

我们定义一个“smart”装饰器来研究meta标签,如果出现这个标签,则可以得到一个相应的HTML:

<!---->
<decorator:usepage id="myPage"></decorator:usepage>
<html></html>
<head></head>

<decorator:head></decorator:head>



<decorator:title default="Welcome!"></decorator:title>



default="staff@example.com" />">
<decorator:getproperty property="meta.author"></decorator:getproperty> default="staff@example.com" />



<decorator:body></decorator:body>


(printable version



可以看到我们使用了getProperty标签的一个默认属性——如果没有指定 author,我们就设定其为staff。如果你决定使用这个模型储存页面的meta数据,你或许需要和你的开发伙伴一起来确定将使用什么标签以及如何使 用他们。简单的,你或许想要使用meta标签来描述诸如页面作者及时间戳之类的东西。更复杂一些,你或许会想像XML文件一样标准化的管理你的站点导航, 同时使用meta标签来通过页面节点转到装饰器。(At the complex end, you may do things like standardize on an XML file to manage your site navigation and use a meta tag to pass the page's node to the decorator. )

图六显示了应用上面的装饰器JSP页面之后生成的结果。


图六:meta标签显示

这些页面属性非常强大,并且拥有着很多不同的特性,并不仅止于meta标签( 常用页面特性列表)。使用SiteMesh一段时间之后,你就会开始思考HTML和JSP作为一种简单标记语言的机制——接近最原始的HTML——无需操作就可以完整的切换到XML/XSL 或其他模版引擎。

小结

综上所述,SiteMesh 提供了一个强大、易用、易结合的机制来使用页面模版。可以想象,它将会有很广泛的用户群。例如,你可以定义一个装饰器针对不同的浏览器输出额外的页面调试 信息(和特定web浏览器结合之后将产生一个特别的功能,你可以强制指定使用某一种用户代理)。你也可以定义一个装饰器产生stripped-down XML输出,用来进行简单的自动化测试。你甚至可以使用装饰器从其他页面提取内容,例如输出到一些简单的门户容器。

sitemesh-blank.war入手比较容易,但我建议学习 sitemesh-example.war 以获取更多的特性和思想。

不论你如何使用SiteMesh,我都发现它将大量的代码从表现层中移到我的装饰器中,而无需学习一种新的编程语言或是模版系统。

对了,作为最后的补充,如果你仍然对组合建立web页面感兴趣,可以查看home.worldonline.dk/viksoe/asmil.htm

祝好运并享受编程的乐趣!

分享到:
评论
1 楼 jiake0504 2007-11-21  
谢谢 

相关推荐

    SIteMesh介绍 配有案例

    **SiteMesh介绍** SiteMesh是一个基于Web的页面布局和装饰框架,主要目的是为大型Web应用程序提供一致的页面布局和外观。它使用了设计模式中的Decorator模式,能够将页面的装饰部分(如头部、底部、侧边栏等)与...

    jsp 页面框架sitemesh 全面帮助文档及示例

    - **sitemesh2003.ppt**:这可能是一个PowerPoint演示文稿,包含了2003年的Sitemesh介绍或教程。 - **sitemesh.rar** 和 **sitemesh-2.4.1(1).zip**、**sitemesh-2.4.1.zip**:这些是Sitemesh的源码或者不同版本的...

    siteMesh demo+文档

    7. **调试和测试**:文档中还会介绍如何查看 SiteMesh 的日志输出,以及如何在开发阶段快速检查装饰效果。 通过研究这个"siteMesh demo+文档",开发者可以快速掌握SiteMesh的基本使用,同时也能了解其在实际项目中...

    sitemesh3-demo

    在参考链接中提到的博客文章(http://blog.csdn.net/thc1987/article/details/6913416),作者详细介绍了如何配置Sitemesh3以及在实际项目中应用它的步骤,包括下载和引入依赖、配置过滤器、设置装饰规则以及处理...

    sitemesh 例子

    此外,提供的"简单文档说明"可能详细介绍了如何设置和运行这个例子,包括安装Sitemesh库、配置Web应用、创建装饰器和测试页面等步骤。阅读这份文档可以帮助初学者快速上手。 总的来说,Sitemesh是一个强大的工具,...

    sitemesh布局知识点汇总

    ### Sitemesh布局知识点汇总 #### 一、Sitemesh简介 Sitemesh是一个非常实用且功能强大的Web页面...通过上述介绍,我们不难发现Sitemesh在Web页面布局和装饰方面具有独特的优势,值得广大Web开发者深入了解和运用。

    sitemesh教程

    此教程基于SiteMesh官方文档的翻译版本,主要介绍了如何在Web项目中集成并使用SiteMesh,并特别关注了与Freemarker模板引擎的结合。 #### 二、安装与配置 ##### 1. 创建Web项目 - **普通Web项目**:首先创建一个...

    SiteMesh2.3很全的一个资料

    8. **文档和实例**:在提供的资料中,文档将详细介绍如何安装、配置和使用SiteMesh 2.3,实例则可以帮助初学者快速理解和上手实践。 9. **依赖库(Lib)**:SiteMesh 2.3 包含了运行所需的库文件,确保了在各种环境...

    sitemesh2.5源码

    - `README.md`:项目介绍和使用指南 通过阅读这些源代码,我们可以了解到Sitemesh2的内部工作机制,包括如何处理HTTP请求、解析页面、装饰策略的实现等。同时,测试代码可以帮助我们验证其功能的正确性。 总结来说...

    初试sitemesh实现模块简易整合

    本篇文章将详细介绍如何在项目中初步整合Sitemesh,以便实现模块化的设计。 ### 一、Sitemesh 概述 1. **装饰模式**:Sitemesh 使用装饰模式,通过拦截HTTP请求,动态地将页面内容与装饰模板结合,形成最终的HTML...

    sitemesh所需jar包ver2.4.1and 2.4.2

    1. **版本介绍**: SiteMesh 2.4.1和2.4.2是SiteMesh的两个稳定版本,提供了对Java Servlet API的兼容性更新和一些bug修复。2.4.2作为2.4.1的后续版本,可能包含了更多的改进和问题修复。 2. **工作原理**: ...

    二手交易平台设计与开发.doc

    * Sitemesh介绍:Sitemesh是一个基于Java的界面设计框架,提供了一个灵活、可扩展的界面设计架构。 * Sitemesh的特点:Sitemesh的特点包括灵活、可扩展、易于维护等。 十、系统测试 * 系统测试的重要性:系统测试...

    sitemesh-2.3.zip

    - `README.txt`: 提供了关于 Sitemesh 的基本介绍、安装和使用指南,是快速入门的参考文档。 - `LICENSE.txt`: 描述了 Sitemesh 的许可协议,通常为 Apache 2.0 或 GPL,表明软件的使用权限和限制。 - `build.xml...

    使用sitemesh替换tiles2,spring mvc+spring web flow+sitemsh

    在构建Web应用程序时,我们经常需要一套强大的布局和模板管理工具来提高开发效率和应用的统一性。...以上就是关于如何在Spring MVC和Spring Web Flow项目中使用Sitemesh替换Tiles2的详细步骤和优势介绍。

    webwork+spring+ibatis+sitemesh开发的应用系统

    下面将详细介绍这四个组件及其在开发中的作用。 1. **WebWork**:WebWork是一个基于Action的MVC(Model-View-Controller)框架,它的核心是请求驱动的Action,通过ActionServlet来处理HTTP请求。WebWork提供了强大...

    SiteMesh-MikeCannonBrookesPresentation

    SiteMesh是用来管理页面不觉非常有效的一个框架工具,这个PPT介绍了sitemesh的主要用法,当然如果能结合官网学习效果会更好

    springmvc+mybatis+ehcache+freemarker+sitemesh页面布局(注解)整合实例完美运行

    下面将分别详细介绍这些技术以及它们在整合中的作用。 1. SpringMVC: SpringMVC是Spring框架的一部分,是一个用于构建Web应用的轻量级MVC框架。它提供了一个分层架构,允许开发者将业务逻辑、数据访问和用户界面...

    struts2讲义_吴峻申

    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 ...

Global site tag (gtag.js) - Google Analytics