SiteMeshOpenSymphony英语OpenSymphony开发的一个Java Web应用程式开发框架。

据OpenSymphony介绍,SiteMesh:

  • 是一个Web页面布局、装饰以及与现有Web应用集成的框架。有助于在由大量页面构成的项目中创建一致的页面布局和外观、一致的导航条、一致的布局方案等。
  • 截取对Web伺服器的任何静态或动态页面的请求,解析页面,从内容中获得属性和数据,生成对原页面进行修改后的最终页面——基于装饰模式
  • 此外可以以面板(Panel)的形式,将完整的HTML页面包含在另一个页面中——类似于伺服器端包含英语Server Side Includes。使用此功能,可以非常快速和有效的建立门户网站类型的Web站点。这基于知名的组合模式英语Composite pattern
  • 基于Java 2的ServletJSPXML技术。这使它在Java EE应用中很好用,而它也可以与非Java的伺服器端Web体系结构集成,例如CGIPerl/Python/C/C++等)、PHPColdFusion
  • 扩展性很强,可以很容易地为自定义需求的进行扩展。

许可证

SiteMesh使用修改自Apache许可证、并与Apache软件许可证完全兼容的OpenSymphony许可证。

原理

SiteMesh使用一个Servlet过滤器,它可以拦截返回的Web浏览器HTML,提取相关内容,并将其合并到被称为装饰器(Decorator)的模板。

历史

SiteMesh最初是在1999年由Joe Walnes开发的。当时它使用的Servlet链——一项不属于标准Servlet规范,但被一些Servlet容器(如Orion Application Server英语Orion Application Server)所支持的特性。

2000年,Servlet规范2.3版的第一次公示版发布,其中包括了新增的Servlet过滤器——这提供了Servlet链的一个标准中的替代品。SiteMesh随即改用Servlet过滤器取代Servlet链。

在此后不久,SiteMesh被决定作为开源软件发布。Joe Walnes和Mike Cannon-Brookes组建了OpenSymphony项目,用以提供Java EE组件的原始码——其前两个项目便是SiteMesh和OSCache英语OSCache

这时,SiteMesh的有一个非常小的用户群,当中的许多人加入这个项目的开发。SiteMesh开始开源后没多久,Victor Salaman改写了其内部的HTML解析器,产生了1200%的性能提升。

外部链接