首先要感謝發明Markdown的傢伙,這東西真是好用吖!html
###SiteMesh概述 嗯,請自行Google之。git
###教程:一分鐘完成Template模板組合github
####1.內容頁面 簡單的示例內容頁面源代碼以下:web
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="theme" content="basic_theme" /> <title>應該是內容頁面</title> </head> <body> <h1>Weekdays</h1> <p>5:00pm - 10:00pm</p> <p>Weekends</p> <p>5:00pm - 10:00pm</p> <a href="${pageContext.request.contextPath}/download/decorators.jsp">down</a> </body> </html>
在源代碼中加入 <meta name="theme" content="basic_theme" />
便可由SiteMesh自動完成Template模板裝配。app
####2.Runtime環境配置webapp
WEB-INF目錄下添加 sitemesh.xml,文件內容中除了指定 decoration-file 路徑的屬性需定製外,其餘內容基本不需更改。jsp
<?xml version="1.0" encoding="UTF-8"?> <sitemesh> <!-- 注意這一行指定的decorators.xml文件的存放位置 --> <property name="decorators-file" value="/WEB-INF/themes/decorators.xml" /> <excludes file="${decorators-file}" /> <page-parsers> <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> </page-parsers> <decorator-mappers> <mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper"> <!-- 注意這一行指定<meta/>標籤的 name 屬性做爲PageDecorator的識別符號 --> <param name="property.1" value="meta.theme" /> </mapper> <mapper class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper" /> <mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper"> <param name="decorator" value="printable" /> <param name="parameter.name" value="printable" /> <param name="parameter.value" value="true" /> </mapper> <mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper" /> <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper"> <param name="config" value="${decorators-file}" /> </mapper> </decorator-mappers> </sitemesh>
WEB-INF/lib 目錄下加入 sitemesh-2.4.2.jarui
這個能夠本身在github上獲取最新版本,話說 sitemesh 3.0 好像無疾而終了?google
WEB-INF/web.xml 文件中加入。重點是 <url-pattern>*.jsp</url-pattern>
,爲了防止SiteMesh隨意處理各種圖片、Javascript或StyleSheets資源,最好指定後綴或url路徑。url
<filter> <filter-name>sitemesh</filter-name> <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>*.jsp</url-pattern> <dispatcher>FORWARD</dispatcher> <dispatcher>REQUEST</dispatcher> </filter-mapping>
最後也是最重要的 decorators.xml文件
<?xml version="1.0" encoding="UTF-8"?> <decorators defaultdir="/WEB-INF/themes"> <decorator name="basic_theme" page="basic_theme.jsp" /> </decorators>
這裏的
<decorator name="basic_theme" .../>
,對應你的內容文件中的<meta name="theme" content="basic_theme" />
額外說明的是:這裏使用Page模型組合Template模板,由於最簡單!
<decorator-mappers> <mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper"> <param name="property.1" value="meta.theme" /> </mapper> ...