作者: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>
查看这个装饰器(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>
可以看到我们使用了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 。
祝好运并享受编程的乐趣!
相关推荐
这是SiteMesh入门级别的资料,配有一个较为全面的案例,仅供入门级别的朋友下载。
SiteMesh是用来管理页面不觉非常有效的一个框架工具,这个PPT介绍了sitemesh的主要用法,当然如果能结合官网学习效果会更好
主要介绍了jsp中sitemesh修改tagRule技术以及详细代码分析,有需要的朋友跟着小编一起学习参考下吧。
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 ...
网站首页、商品分类两大功能展开,在介绍页面及功能的同时,也讲述了构成两大功能的技术点及技术用法,包括模板引擎Freemarker、网站整体的布局方案(Sitemesh)、SpringMVC等构成的基础功能,尤其详细的介绍了我们...
springmvc 介绍 它是一个典型的MVC三层框架示例工程,快速简单的上手。 涉及技术组件 SpringMVC MyBaits Apache Shiro Bootstrap3 Sitemesh3 Activiti log4j2; 集成示例 用户登录 文件上传下载 文件压缩 Excel导入 ...
,在本次项目中使用了不少新技术新方法,ibator,aop缓存,sitemesh由于使用了这些新技术使得开发效率有了不小的提升。 现在我向大家介绍一个小工具, ibator-huoniao通过它你可以通过配置少量参数,通过一键生成...
布局框架:SiteMesh 3.0.1 分布式应用程序协调服务:ZooKeeper 3.3.1 分布式服务框架:Dubbo 2.5.3 接口测试框架:Swagger2 2.6.1 工具类:Apache Commons、Jackson 2.2、fastjson 1.2.20 详细介绍参考:...
在《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括《开发者突击:Java Web主流框架整合开发(J2EE+...
关于《java开放源码编程》此书介绍了如何通过使用开放源码工具来构建一个现实的应用,以提高开发效率,降低企业开发费用。 本书共分三个部分,使基本概念、使用工具和开发应用三个过程贯穿于读者的学习当中。特别是...
在本书架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。 本书内容循序渐进,通俗易懂,覆盖了Java Web开发的...
在本书架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。 本书内容循序渐进,通俗易懂,覆盖了Java Web开发的...
在本书架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。 本书内容循序渐进,通俗易懂,覆盖了Java Web开发的...
在本书架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。 本书内容循序渐进,通俗易懂,覆盖了Java Web开发的...
在本书架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。 本书内容循序渐进,通俗易懂,覆盖了Java Web开发的...
在本书架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。 本书内容循序渐进,通俗易懂,覆盖了Java Web开发的...
在本书架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。 本书内容循序渐进,通俗易懂,覆盖了Java Web开发的...
在本书架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。 本书内容循序渐进,通俗易懂,覆盖了Java Web开发的...
基于SSM框架的项目管理系统演示地址: ://193.112.7.152:8090/xhSmart/ 账号:linwenxian密码:123456系统所用技术介绍1,系统使用Spring + SpringMVC + MyBatis框架开发2,sitemesh:公共模板页3,log4j:日志系统4...
继上一篇文章中谈到的表单自动填充问题解决后,接下来又...查看网页源码发现时因为异常的网页是通过sitemesh进行装饰的,而装饰页面没有定义文本模式!DOCTYPE,导致浏览器没有通过标准模式解析网页。 !文档类型(英