数据加载中……
使用sitemesh建立复合视图1
简介:
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标签。

posted on 2009-10-26 12:50 mingruofei 阅读(63) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: