http://blog.sina.com.cn/javapig[订阅]
字体大小: 正文
使用sitemesh建立复合视图 - 1.hello(2008-07-15 13:47:52)
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的帮助下,我们可以开心的删掉他们了。

1.在web-inf/web.xml中copy以下filter的定义:
<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>/*</url-pattern> </filter-mapping>
<taglib> <taglib-uri>sitemesh-decorator</taglib-uri>
<taglib-location>/web-inf/sitemesh-decorator.tld</taglib-location> </taglib>
<taglib> <taglib-uri>sitemesh-page</taglib-uri>
<taglib-location>/web-inf/sitemesh-page.tld</taglib-location> </taglib>

2.copy所需jar和dtd文件至相应目录,访问opensymphony.sourceforge.net的cvs以获取sitemesh最新版本。
sitemesh.jar web-inf/lib
sitemesh-decorator.tld web-inf
sitemesh-page.tld web-inf

3.建立web-inf/decorators.xml描述各装饰器页面(可仿照sitemesh例子)。
<decorators defaultdir="/_decorators">     
<decorator name="main" page="main.jsp">
<pattern>*</pattern> </decorator>
</decorators>

4.建立装饰器页面 /_decorators/main.jsp
<%@ page contenttype="text/html; charset=gbk"%> 
<%@ taglib uri="sitemesh-decorator" prefix="decorator" %>
<html>
<head> <title><decorator:title default="装饰器页面..." /></title>
<decorator:head />
</head>
<body> sitemesh的例子<hr>
<decorator:body />
<hr>chen56@msn.com </body>
</html>

5.建立一个的被装饰页面 /index.jsp(内容页面)
<%@ page contenttype="text/html; charset=gbk"%> 
<html>
<head> <title>agent test</title>
</head>
<body> <p>本页只有一句,就是本句.</p>
</body>
</html>

最后访问index.jsp,将生成如下页面:


而且,所有的页面也会如同index.jsp一样,被sitemesh的filter使用装饰模式修改成如上图般模样,却不用再使用include标签。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
  • 评论加载中,请稍候...
发评论    明星私家相册

验证码:看不清楚数字吗?点击这里再试试。收听验证码

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

相关博文
读取中...
推荐博文
读取中...