关于前端使用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

相关文章
相关标签/搜索