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

一、SiteMesh介紹

SiteMesh是一個(gè)Java WEB項(xiàng)目的網(wǎng)頁(yè)布局和修飾框架。使用SiteMesh后就不再需要在每個(gè)頁(yè)面中都用<jsp:include>標(biāo)簽引入頁(yè)頭、頁(yè)尾、導(dǎo)航等其他公用頁(yè)面了。

  • 可以將網(wǎng)頁(yè)的內(nèi)容和頁(yè)面結(jié)構(gòu)分離,達(dá)到頁(yè)面結(jié)構(gòu)共享的目的。

  • 頁(yè)面裝飾效果耦合在目標(biāo)頁(yè)面中,無(wú)需使用include指令顯示包含裝飾效果,目標(biāo)頁(yè)面和裝飾頁(yè)面完全分離

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

  • SiteMesh通過(guò)Filter攔截請(qǐng)求和響應(yīng),給原始頁(yè)面加入裝飾,再把裝飾后的結(jié)果返回給客戶端。

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

  • 提取被訪問(wèn)頁(yè)的內(nèi)容,放置到裝飾模板中的適當(dāng)位置。

 

二、業(yè)務(wù)場(chǎng)景使用

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

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開(kāi)發(fā)培訓(xùn)

 

 

三、SiteMesh工作原理

  sitemesh應(yīng)用Decorator模式,用filter截取request和response,把頁(yè)面組件head,content,banner、bottom結(jié)合為一個(gè)完整的視圖。通常我們都是用include標(biāo)簽在每個(gè)jsp頁(yè)面中來(lái)不斷的包含各種header, stylesheet, scripts and footer。見(jiàn)下圖

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開(kāi)發(fā)培訓(xùn)

當(dāng)用戶請(qǐng)求home.jsp,并且服務(wù)器處理完畢正準(zhǔn)備返回?cái)?shù)據(jù)之時(shí),它被SiteMesh Fi

網(wǎng)友評(píng)論