Sitemesh学习[0]

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

使用sitemesh建立复合视图 - 1.hello

(作者:chen-neu ,提供给 huihoo.com 发布) 使用sitemesh建立复合视图 - 1.hello <- now

使用sitemesh建立复合视图 - 2.装饰器

使用sitemesh建立复合视图 - 3.其它讨论

sitemesh是opensymphony团队开发的j2ee应用框架之一,旨在提高页面的可维护性和复用性。opensymphony的另一个广为人知的框架为webwork是用作web层的表示框架。他们都是开源的,可以在www.sf.net下找到。

应用于以下大项目的例子:http://opensource.thoughtworks.com/projects/sitemesh.html

www.jboss.org www.theserverside.com www.opensymphony.com www.atlassian.com 简介:

sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer,现在,在sitemesh的帮助下,我们可以开心的删掉他们了。如下图,你想轻松的达到复合视图模式,那末看完本文吧。

hello sitemesh:

在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>

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例子)。 <decorators defaultdir="/_decorators">

<decorator name="main" page="main.jsp">

<pattern>*</pattern>

</decorator>

</decorators>

建立装饰器页面 /_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>

建立一个的被装饰页面 /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标签。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航