關於前端使用SiteMesh的一些介紹

Overview

在網站開發的過程當中,一般一個網站會有一個總體的風格,頁面都有不少共同的菜單,橫欄的底部信息。之前咱們會採用include標籤在每一個jsp頁面中來不斷的包含各類headerstylesheetscripts and footer,如今,在sitemesh的幫助下,咱們沒必要再使用這種方式來保持風格統一了。html

關於SiteMesh概述

sitemesh的設計思想是裝飾者(decorator)設計模式。SiteMesh使用一個Servlet過濾器,它能夠攔截返回的Web瀏覽器HTML,提取相關內容,並將其合併到被稱爲裝飾器(Decorator)的模板。設計模式

關於裝飾者(decorator)設計模式

嘗試着簡短的幾句話介紹清楚,發現很難..列一個官方的定義:瀏覽器

1jsp

The Decorator Pattern attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality. (裝飾者模式能夠動態地給一個對象增長其餘職責。就擴展對象功能來講,裝飾者模式比生成子類更爲靈活。)ide

詳細的關於裝飾者設計模式的資料,推薦下面兩篇文章:
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

首先看一下SiteMesh的工做過程圖:
sitemesh2.png網站

從宏觀上來看上圖,HeaderFooter都是在每一個界面都是固定或者有細微變化的(但不會有結構上的變化),改變的只是中間的元素。這時候咱們能夠編寫一個decorator頁面(上圖中的browser-theme.jsp),這樣在編寫實際的展現頁面(左上角的Menu.jsp)時,只須要去展現實際上不一樣的界面,並指定它須要哪一個decorator修飾,這樣在返回結果時,其實是decorator和實際的展現頁面組合成的新頁面,如上圖中右下角的Menu.jsp界面。
看得出來,SiteMesh使得咱們能夠沒必要在每一個界面都重複編寫相同的模板性元素,而只須要專一於實際須要展現的內容。
並且,使用SiteMesh能夠實現更大的靈活性,給界面指定不一樣的decorator,好比下圖中,使用手機瀏覽器和網頁瀏覽器訪問Menu.jsp時,該頁面是被不一樣的decorator修飾,最終返回不一樣的組合界面。
sitemesh1.pngui

 

官方介紹:http://wiki.sitemesh.org/wiki/display/sitemesh3/SiteMesh+3+Overviewspa

相關文章
相關標籤/搜索