OpenSymphony——SiteMesh——Decorators(1)
(2009-04-14 20:24:55)一、介绍OpenSymphony
- OpenSymphony是一个开源项目,致力于提供企业级的J2EE组件。OpenSymphony的组件重点强调简洁、一体化、插件化(还是翻译为可插拔?)以及符合规范。
- 鉴于上面翻译不够准确,特意附上原文如下:OpenSymphony is an Open Source project dedicated to providing enterprise class J2EE components. Our components aim to stress simplicity, integration, pluggability and specification compliance.
二、介绍SiteMesh
- SiteMeshs是OpenSymphony的组件之一,用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。
- 它是一个优于Apache Tiles的Web页面布局、装饰框架。
- SiteMesh的功能基础:Sitemesh是由一个基于Web页面布局、装饰及与现存Web应用整合的框架。它能帮助我们再由大量页面工程的项目中创建一致的页面布局和外观,如一致的导航条、一致的banner、一致的版权等。它不仅能处理动态的内容,如JSP、PHP、ASP、CGI等产生的内容,还能处理静态的内容,比如HTML的内容,使得它的内容也符合你的页面结构的要求。甚至它能像include那样将HTML文件作为一个面板的形式嵌入到别的文件中去。所有的这些,都是GOF的Decorator模式的最生动的实现。装饰模式是在不必改变原类文件和使用集成的情况下,动态地扩展一个对象的功能。它能通过穿件一个包装对象,也就是装饰来包裹真是的对象。尽管它是由Java语言来实现的,但是它能与其他Web应用很好的集成。
- 为什么要使用SiteMesh?
将UI层很多共用的静态或动态部分抽取出来,以达到界面风格统一和美观的目的。Apache Tiles框架可以达到整合通用的静态或动态UI的目的,再加上它与Struts的完美集成,导致大小项目都把他作为UI层的首选框架,但是Tiles也有很多不足,而SiteMesh则刚好可以弥补这些不足。
三、SiteMesh vs Apache Tiles
SiteMesh的优点:
- 使用角度,SiteMesh最强的一个特性是SiteMesh将decorator模式用在过滤器上,任何需要被装饰的页面都不知道它要被谁装饰,所以它就可以用来装饰来自php asp cgi等产生的页面。
- 可以定义若干个装饰器,根据参数动态地选择装饰器,产生动态的外观以满足要求。
- SiteMesh也有一套功能强大的属性体系,它能帮助你构建功能强大而灵活的装饰器。
- 简单,系统设计阶段就能把模板文件和SiteMesh框架搭好,哪些页面使用框架,哪些页面不使用框架,通过UI Demo很快就能定义出来。
- 在后续开发中所有成员几乎感受不到SiteMesh的存在,各自仅仅关心自己模板功能实现。
Apache Tiles的缺点:
- Apache Tiles框架要求所有人不仅仅要了解并且清楚Apache Tiles的存在,并且要特别熟悉每一个Tiles layout模板的作用,否则就可能出现用错模板的情况;
- 每个人涉及到的所有WEB页面都需要去配置文件里面逐个配置,不仅麻烦出错的几率还高;
四、SiteMesh的基本原理