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%的效能提升。

外部連結