轉自:http://docs.huihoo.com/java/sitemesh/index.html
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的幫助下,我們可以開心的刪掉他們了。如下圖,你想輕松的達到復合視圖模式,那末看完本文吧。
hello 例子:
步驟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>
這里只定義了一個 main 裝飾器。
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,將生成頁面。
------------------------------------------------------------------------------------------
簡單地改了改sitemesh自帶的例子sitemesh-example
/Files/hijackwust/sitemeshHelloWorld.rar