sitemesh是opensymphony团队开发的j2ee应用框架之一,旨在提高页面的可维护性和复用性。opensymphony的另一个广为人知的框架为webwork是用作web层的表示框架。他们都是开源的,可以在www.sf.net下找到。
应用于以下大项目的例子:http://opensource.thoughtworks.com/projects/sitemesh.html
简介:
sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。
通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer,现在,
在sitemesh的帮助下,我们可以开心的删掉他们了。如下图,你想轻松的达到复合视图模式,那末看完本文吧。
hello sitemesh:
- 在WEB-INF/web.xml中copy以下filter的定义: |
1<filter> <filter-name>sitemesh</filter-name>
2<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
3</filter>
1<filter-mapping>
2<filter-name>sitemesh</filter-name>
3<url-pattern>/*</url-pattern> </filter-mapping>
1<taglib> <taglib-uri>sitemesh-decorator</taglib-uri>
2<taglib-location>/WEB-INF/sitemesh-decorator.tld</taglib-location> </taglib>
1<taglib> <taglib-uri>sitemesh-page</taglib-uri>
2<taglib-location>/WEB-INF/sitemesh-page.tld</taglib-location> </taglib>
copy所需jar和dtd文件至相应目录,访问 opensymphony.sourceforge.net 的cvs以获取sitemesh最新版本。 sitemesh.jar WEB-INF/lib sitemesh-decorator.tld WEB-INF sitemesh-page.tld WEB-INF 建立 WEB-INF/ decorators.xml描述各装饰器页面(可仿照sitemesh例子)。
1<decorators defaultdir="/_decorators">
2<decorator name="main" page="main.jsp">
3<pattern>*</pattern> </decorator>
4</decorators>
建立装饰器页面 /_decorators/main.jsp
@ page contentType="text/html; charset=GBK"
1 ```
2@ taglib uri="sitemesh-decorator" prefix="decorator"
1<html>
2<head> <title><decorator:title default="装饰器页面..."></decorator:title></title>
3<decorator:head></decorator:head>
4</head>
5<body> sitemesh的例子<hr/>
6<decorator:body></decorator:body>
7<hr/>[email protected] </body>
8</html>
建立一个的被装饰页面 /index.jsp(内容页面)
@ page contentType="text/html; charset=GBK"
本页只有一句,就是本句.
``` ---最后访问index.jsp,将生成如下页面:
而且,所有的页面也会如同index.jsp一样,被sitemesh的filter使用装饰模式修改成如上图般模样,却不用再使用include标签。