在網站開發的過程當中,一般一個網站會有一個總體的風格,頁面都有不少共同的菜單,橫欄的底部信息。之前咱們會採用include
標籤在每一個jsp
頁面中來不斷的包含各類header
, stylesheet
, scripts
and footer
,如今,在sitemesh
的幫助下,咱們沒必要再使用這種方式來保持風格統一了。html
sitemesh
的設計思想是裝飾者(decorator
)設計模式。SiteMesh使用一個Servlet過濾器,它能夠攔截返回的Web瀏覽器的HTML,提取相關內容,並將其合併到被稱爲裝飾器(Decorator)的模板。設計模式
decorator
)設計模式嘗試着簡短的幾句話介紹清楚,發現很難..列一個官方的定義:瀏覽器
1jsp |
|
詳細的關於裝飾者設計模式的資料,推薦下面兩篇文章:
1.http://blog.chinaunix.net/uid-20761674-id-304542.html
2.http://www.cnblogs.com/rush/archive/2011/05/08/Decorator_DesignPattern_NETFramework.htmlflex
首先看一下SiteMesh
的工做過程圖:
網站
從宏觀上來看上圖,Header
和Footer
都是在每一個界面都是固定或者有細微變化的(但不會有結構上的變化),改變的只是中間的元素。這時候咱們能夠編寫一個decorator
頁面(上圖中的browser-theme.jsp
),這樣在編寫實際的展現頁面(左上角的Menu.jsp
)時,只須要去展現實際上不一樣的界面,並指定它須要哪一個decorator
修飾,這樣在返回結果時,其實是decorator
和實際的展現頁面組合成的新頁面,如上圖中右下角的Menu.jsp
界面。
看得出來,SiteMesh使得咱們能夠沒必要在每一個界面都重複編寫相同的模板性元素,而只須要專一於實際須要展現的內容。
並且,使用SiteMesh能夠實現更大的靈活性,給界面指定不一樣的decorator
,好比下圖中,使用手機瀏覽器和網頁瀏覽器訪問Menu.jsp
時,該頁面是被不一樣的decorator
修飾,最終返回不一樣的組合界面。
ui
官方介紹:http://wiki.sitemesh.org/wiki/display/sitemesh3/SiteMesh+3+Overviewspa