SiteMesh概述
SiteMesh是opensymphony团队开发的j2ee应用框架之一,旨在提高页面的可维护性和复用性。SiteMesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。在sitemesh中,页面分为两种:
1) 装饰模板:用于修饰其它页面的页面
2) 普通页面:一般指各种应用页面
SiteMesh一般处理流程如下:
1) 它通过过滤器(filter)来拦截页面访问
2) 根据被访问页面的URL找到合适的装饰模板
3) 提取被访问页面的内容,放到装饰模板中合适的位置
4) 最终将装饰后的页面发送给客户端
SiteMesh的运用
1) SiteMesh依赖的jar包:sitemesh-2.4.1.jar;
2) 配置web.xml文件加入SiteMesh过滤器:
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>
com.opensymphony.module.sitemesh.filter.PageFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/mail/*</url-pattern>
</filter-mapping>
3) 配置decorators.xml文件,描述装饰器和被装饰请求页面等:
4) 编写装饰器页面:mailframe.jsp (模版文件,被所有被修饰页面共享)
<%@ page contentType="text/html;charset=GBK"%>
......省略代码......
<%--装饰器标签定义--%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator"
prefix="decorator"%>
......省略代码......
<htmlxmlns="http://www.w3.org/1999/xhtml" xml:lang="zh"lang="zh">
<head>
......省略代码......
<%--装饰器标签:替换成被装饰页面的title内容,如果没有取default的属性值--%>
<title><decorator:title default="邮件系统" /></title>
......省略代码......
<%--装饰器标签:替换成被装饰页面的head内容--%>
<decorator:head />
</head>
<body>
......省略代码......
<%--装饰器标签:替换成被装饰页面的body内容--%>
<tdclass="rightbox"><decorator:body/></td>
</tr>
</table>
......省略代码......
</body>
</html>