摘要:首先這個Decorator解釋一下這個單詞:“裝飾器”,我覺得其實可以這樣理解,他就像我們用到的Frame,他把每個頁面共有的東西提煉了出來,也可能我們也會用各種各樣的include標簽,將我們的常用頁面給包括進來:比如說頁面的top,bottom這些每個頁面幾乎都有,而且都一樣,如果我們在每個頁面都include,可以發(fā)現(xiàn)我們的程序有很多冗余,重復。相比之下裝飾器給我們提供了一個較好的選擇,他在你要顯示的頁面根本看不出任何include信息,可以說完全解耦。

一、SiteMesh介紹

SiteMesh是一個Java WEB項目的網頁布局和修飾框架。使用SiteMesh后就不再需要在每個頁面中都用<jsp:include>標簽引入頁頭、頁尾、導航等其他公用頁面了。

  • 可以將網頁的內容和頁面結構分離,達到頁面結構共享的目的。

  • 頁面裝飾效果耦合在目標頁面中,無需使用include指令顯示包含裝飾效果,目標頁面和裝飾頁面完全分離。

  • 整個web應用可以使用相同的裝飾頁面,風格統(tǒng)一,整體效果更好

  • SiteMesh通過Filter攔截請求和響應,給原始頁面加入裝飾,再把裝飾后的結果返回給客戶端。

  • 根據(jù)頁面URL匹配規(guī)則查找合適的裝飾模板頁

  • 提取被訪問頁的內容,放置到裝飾模板中的適當位置。

 

二、業(yè)務場景使用

比如常見的就是crm系統(tǒng),左邊的樹形菜單就是一致的,變化的右邊主體部分(即被裝飾的頁面)。

電腦培訓,計算機培訓,平面設計培訓,網頁設計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

 

 

三、SiteMesh工作原理

  sitemesh應用Decorator模式,用filter截取request和response,把頁面組件head,content,banner、bottom結合為一個完整的視圖。通常我們都是用include標簽在每個jsp頁面中來不斷的包含各種header, stylesheet, scripts and footer。見下圖

電腦培訓,計算機培訓,平面設計培訓,網頁設計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

當用戶請求home.jsp,并且服務器處理完畢正準備返回數(shù)據(jù)之時,它被SiteMesh Fi