读书人

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

发布时间: 2012-11-03 10:57:43 作者: rapoo

使用sitemesh建立复合视图 - 1.hello
sitemesh是opensymphony团队开发的j2ee应用框架之一,旨在提高页面的可维护性和复用性。opensymphony的另一个广为人知的框架为webwork是用作web层的表示框架。他们都是开源的,可以在www.sf.net下找到。
简介:
sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer,现在,在sitemesh的帮助下,我们可以开心的删掉他们了。如下图,你想轻松的达到复合视图模式,那末看完本文吧。



hello 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标签。

个人理解:之前可能会创建一个专门的JSP用于include所有必须的界面,然后其它的内容界面再include这个JSP,sitemesh则使用了配置的方式来实现无include创建页面复合视图,较之include方式更加灵活,也更能提供个性化。



读书人网 >Web前端

热点推荐