﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-刘文涛-随笔分类-SiteMesh 2.2.1</title><link>http://www.blogjava.net/liuwentao253/category/14247.html</link><description>I am a coder</description><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 14:22:34 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 14:22:34 GMT</pubDate><ttl>60</ttl><item><title>decorator:getProperty 用法</title><link>http://www.blogjava.net/liuwentao253/archive/2007/02/28/101130.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Wed, 28 Feb 2007 05:52:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2007/02/28/101130.html</guid><description><![CDATA[原始界面中有下列形式<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">meta name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">menu</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> content</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">AdminMenu</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">content tag</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">heading</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;&lt;</span><span style="COLOR: #000000">fmt:message key</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">activeUsers.heading</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;&lt;/</span><span style="COLOR: #000000">content</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">body id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">activeUsers</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">body </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">main</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span></div><br /><br />都可以被default.jsp引到 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">decorator:getProperty property</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">meta.menu</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">decorator:getProperty property</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">page.heading</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">decorator:getProperty property</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">body.id</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> writeEntireProperty</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">true</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">decorator:getProperty property</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">body.class</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> writeEntireProperty</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">true</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span></div><img src ="http://www.blogjava.net/liuwentao253/aggbug/101130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2007-02-28 13:52 <a href="http://www.blogjava.net/liuwentao253/archive/2007/02/28/101130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sitemesh 在appfuse中的应用</title><link>http://www.blogjava.net/liuwentao253/archive/2007/02/01/97325.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Thu, 01 Feb 2007 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2007/02/01/97325.html</guid><description><![CDATA[
		<p>appfuse的页面是通过sitemesh模板做的。在web.xml里的相关配置：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">sitemesh</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">com.opensymphony.module.sitemesh.filter.PageFilter</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">mapping</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">sitemesh</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img id="Codehighlighter1_245_370_Open_Image" onclick="this.style.display='none'; Codehighlighter1_245_370_Open_Text.style.display='none'; Codehighlighter1_245_370_Closed_Image.style.display='inline'; Codehighlighter1_245_370_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_245_370_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_245_370_Closed_Text.style.display='none'; Codehighlighter1_245_370_Open_Image.style.display='inline'; Codehighlighter1_245_370_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">url</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">pattern</span>
				<span style="COLOR: #000000">&gt;</span>
				<span id="Codehighlighter1_245_370_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_245_370_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">&lt;/url-pattern&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        &lt;!--dispatcher&gt;REQUEST&lt;/dispatcher&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        &lt;dispatcher&gt;FORWARD&lt;/dispatcher--&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;/filter-mapping&gt;</span>
				</span>
		</div>
		<p>    然后它自己有一个配置文件。sitemesh.xml内容如下： </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">sitemesh</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">property name</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">decorators-file</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> value</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/WEB-INF/decorators.xml</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">excludes file</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">${decorators-file}</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">page</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">parsers</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">parser </span>
				<span style="COLOR: #0000ff">default</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">true</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">com.opensymphony.module.sitemesh.parser.HTMLPageParser</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">parser content</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/html</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">com.opensymphony.module.sitemesh.parser.HTMLPageParser</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">parser content</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/html;charset=ISO-8859-1</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">com.opensymphony.module.sitemesh.parser.HTMLPageParser</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">page</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">parsers</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorator</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">mappers</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">mapper </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">param name</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">config</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> value</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">${decorators-file}</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">mapper</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">decorator</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">mappers</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">sitemesh</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
		<p>还有一个配置文件，decorators.xml，内容如下：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorators defaultdir</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/decorators</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">excludes</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img id="Codehighlighter1_76_256_Open_Image" onclick="this.style.display='none'; Codehighlighter1_76_256_Open_Text.style.display='none'; Codehighlighter1_76_256_Closed_Image.style.display='inline'; Codehighlighter1_76_256_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_76_256_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_76_256_Closed_Text.style.display='none'; Codehighlighter1_76_256_Open_Image.style.display='inline'; Codehighlighter1_76_256_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pattern</span>
				<span style="COLOR: #000000">&gt;/</span>
				<span style="COLOR: #000000">demos</span>
				<span id="Codehighlighter1_76_256_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_76_256_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">&lt;/pattern&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            &lt;pattern&gt;/resources/*&lt;/pattern&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;/excludes&gt; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;decorator name="default" page="default.jsp"&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        &lt;pattern&gt;/*&lt;/pattern&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;/decorator&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&lt;/decorators&gt;</span>
				</span>
		</div>
		<p>表示不装饰 /demos 和 /resources下的页面。装饰器的模板为default.jsp。而且此模板网页在文件夹/decorators下。 然后打开 default.jsp.我们会看到有以下几个标签：<br /> <br />1 : &lt;decorator:title/&gt; : <br />导入要装饰的原始页面的title内容 然后是一些导入css和javascript的代码。 <br /><br />2 : &lt;decorator:head /&gt;<br />导入原始页面(被包装页面)的head标签中的内容。 <br /><br />3 : &lt;decorator:getProperty property="body.id" writeEntireProperty="true"/&gt;<br />在标签处插入原始页面(被包装页面)的原有的标签的属性中的内容 </p>
<img src ="http://www.blogjava.net/liuwentao253/aggbug/97325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2007-02-01 17:16 <a href="http://www.blogjava.net/liuwentao253/archive/2007/02/01/97325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SiteMesh - 激赏！</title><link>http://www.blogjava.net/liuwentao253/archive/2006/09/09/68679.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Sat, 09 Sep 2006 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/09/09/68679.html</guid><description><![CDATA[
		<p>视图模板，我一直用tiles,作为struts插件使用。今天实践了一回SiteMesh,其设计上的灵光让人赞叹不已，记得上回这么激动还是接触spring时吧。tiles好象从“美“的角度就差了一些，<a href="http://www.jboss.org/">www.jboss.org</a> 就是采用了它。<br /><br />简介：SiteMesh ,出自Opensymphony，和大名鼎鼎的</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">Webwork<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />OsCaceh<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />OsWorkflow</span>
		</div>
		<p>同门， 它的思想是Decorator模式，使用servlet2.3的Flitler，截取request和response, 把页面组件</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">head<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />content<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />banner</span>
		</div>
		<p>等结合为一个完整的视图。和当下正火的Ioc暗合，即页面不需要知道怎样被装饰，交由容器负责。<br /><br /><br /><img src="http://www.opensymphony.com/sitemesh/images/overview.gif" /></p>
		<p>
				<br />以下是几个常用的标签：</p>
		<p>1 ：&lt;decorator:title default="default title" /&gt;：<br />      读取被装饰页面的标题，并给出了默认标题。</p>
		<p>2 ：&lt;decorator:head /&gt;：<br />      读取被装饰页面的&lt;head&gt;中的内容；</p>
		<p>3 ：&lt;decorator:body /&gt;：<br />      读取被装饰页面的&lt;body&gt;中的内容；</p>
		<p>4 ：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">page:applyDecorator </span>
				<span style="COLOR: #ff0000">page</span>
				<span style="COLOR: #0000ff">="/menu.jsp"</span>
				<span style="COLOR: #ff0000"> name</span>
				<span style="COLOR: #0000ff">="panel"</span>
				<span style="COLOR: #ff0000"> </span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">page:param </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="myEmail"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000"> chagezw@hotmail.com </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">page:param</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">page:applyDecorator</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000"> </span>
		</div>
		<p>把menu.jsp文件用panel指定的装饰器装饰，并把结果插入到该位置,并设置一个页参数, 该属性值可以在包装页面中用 &lt;decorator:getProperty property=="myEmail"&gt; 标签访问到 .tiles的大部分功能这一个标签就可以作到了。</p>
		<p>  重要的工作就是制作装饰器页面本身(也就是包含结构和规则的页面)，然后把他们描述到decorators.xml中.</p>
<img src ="http://www.blogjava.net/liuwentao253/aggbug/68679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-09-09 11:01 <a href="http://www.blogjava.net/liuwentao253/archive/2006/09/09/68679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sitemesh技术的应用</title><link>http://www.blogjava.net/liuwentao253/archive/2006/09/08/68447.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Fri, 08 Sep 2006 02:21:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/09/08/68447.html</guid><description><![CDATA[
		<p>一，基本概念</p>
		<p>1，Sitemesh是一种页面装饰技术 ：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000"> ：它通过过滤器(filter)来拦截页面访问<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000"> ：根据被访问页面的URL找到合适的装饰模板<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000"> ：<strong>提取被访问页面的内容，放到装饰模板中合适的位置</strong><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #000000">4</span>
				<span style="COLOR: #000000"> ：最终将<strong>装饰后的页面</strong>发送给客户端。<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
		</div>
		<p>2，在sitemesh中，页面分为两种：装饰模板和普通页面。<br />1）装饰模板，是指用于修饰其它页面的页面。<br />2）普通页面，一般指各种应用页面。<br />3，接下来，我们通过一个简单的例子来说明一下sitemesh修饰网页的基本原理。</p>
		<p>二，模板修饰网页的原理<br /><br /><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/pagecutomize2.gif" /><br /><br /><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/pagecutomize3.gif" /><br /><br /><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/pagecutomize4.gif" /><br /><br />通过Sitemesh的注册机制，告诉Sitemesh，当访问该路径时使用XXX模板（假定使用前面那个模板）来修饰被访问页面。 <br /><br /></p>
		<img src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/pagecutomize5.gif" />
		<br />
		<br />当用户在左边导航栏点击“戏说长城”（ /ShowGreatWall.do）时，右边的“戏说长城”页面将会被指定的模板修饰<br /><br /><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/pagecutomize6.gif" /><br /><br />总结上面过程，Sitemesh修饰网页的基本原理，可以通过下面来说明：<br /><br /><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/pagecutomize7.gif" /><br /><br />三，Sitemesh的配置与使用 
<p>1）WEB-INF/web.xml中加入filter定义与sitemesh的taglib定义</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">     </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">sitemesh</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">com.opensymphony.module.sitemesh.filter.PageFilter</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">mapping</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">sitemesh</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_244_583_Open_Image" onclick="this.style.display='none'; Codehighlighter1_244_583_Open_Text.style.display='none'; Codehighlighter1_244_583_Closed_Image.style.display='inline'; Codehighlighter1_244_583_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_244_583_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_244_583_Closed_Text.style.display='none'; Codehighlighter1_244_583_Open_Image.style.display='inline'; Codehighlighter1_244_583_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />          </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">url</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">pattern</span><span style="COLOR: #000000">&gt;</span><span id="Codehighlighter1_244_583_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_244_583_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&lt;/url-pattern&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     &lt;/filter-mapping&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     &lt;taglib&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          &lt;taglib-uri&gt;sitemesh-decorator&lt;/taglib-uri&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          &lt;taglib-location&gt;/WEB-INF/sitemesh-decorator.tld&lt;/taglib-location&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     &lt;/taglib&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     &lt;taglib&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          &lt;taglib-uri&gt;sitemesh-page&lt;/taglib-uri&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          &lt;taglib-location&gt;/WEB-INF/sitemesh-page.tld&lt;/taglib-location&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     &lt;/taglib&gt; </span></span></div><p>2）创建WEB-INF/decorators.xml，在该文件中配置有哪些模板，以及每个模板具体修饰哪些URL，另外也可以配置哪些URL不需要模板控制 , decorators.xml的一个例子如下：</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">excludes</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/Login*</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">excludes</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorators </span><span style="COLOR: #ff0000">defaultdir</span><span style="COLOR: #0000ff">="/decorators"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="main"</span><span style="COLOR: #ff0000"> page</span><span style="COLOR: #0000ff">=“DecoratorMainPage.jsp"&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #ff0000">&lt;pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/*</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">decorator</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=“pop" </span><span style="COLOR: #ff0000">page</span><span style="COLOR: #0000ff">=“PopPage.jsp"&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #ff0000">&lt;pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/showinfo.jsp*</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />              /myModule/GreatWallDetailAction.do*<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">decorator</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">decorators</span><span style="COLOR: #0000ff">&gt;</span></div><p>3）我们看一个修饰模板的例子 </p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">%@page </span><span style="COLOR: #ff0000">contentType</span><span style="COLOR: #0000ff">="text/html;?charset=GBK"</span><span style="COLOR: #ff0000">%</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">%@taglib </span><span style="COLOR: #ff0000">uri</span><span style="COLOR: #0000ff">="sitemesh-decorator"</span><span style="COLOR: #ff0000">?prefix</span><span style="COLOR: #0000ff">="decorator"</span><span style="COLOR: #ff0000"> %</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt; <strong><u>&lt;</u></strong></span><span style="COLOR: #800000"><strong><u>decorator:title</u></strong></span><span style="COLOR: #0000ff"><strong><u>/&gt;</u></strong> &lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span><strong><u><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator:head</span><span style="COLOR: #0000ff">/&gt;</span></u></strong><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        Hello World  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">hr</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       <strong><u> </u></strong></span><strong><u><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator:body</span><span style="COLOR: #0000ff">/&gt;</span></u></strong><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> </span></div><p>4）我们看一个被修饰的页面的例子：</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">%@ page </span><span style="COLOR: #ff0000">contentType</span><span style="COLOR: #0000ff">="text/html;?charset=GBK"</span><span style="COLOR: #ff0000">%</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Hello World</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">p</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Decorated page goes here.</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">p<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    &lt;/body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> </span></div><p>5）我们看一下装饰模板中可以使用的Sitemesh标签 </p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator:head </span><span style="COLOR: #0000ff">/&gt;</span></div><p> 取出被装饰页面的head标签中的内容。 </p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator:body </span><span style="COLOR: #0000ff">/&gt;</span></div><p>取出被装饰页面的body标签中的内容。 </p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator:title </span><span style="COLOR: #ff0000">default</span><span style="COLOR: #0000ff">="<img src="http://www.blogjava.net/images/dot.gif" />"</span><span style="COLOR: #ff0000">  </span><span style="COLOR: #0000ff">/&gt;</span></div><p>取出被装饰页面的title标签中的内容。default为默认值</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator:getProperty </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="<img src="http://www.blogjava.net/images/dot.gif" />"</span><span style="COLOR: #ff0000"> default</span><span style="COLOR: #0000ff">="<img src="http://www.blogjava.net/images/dot.gif" />"</span><span style="COLOR: #ff0000">  writeEntireProperty</span><span style="COLOR: #0000ff">="<img src="http://www.blogjava.net/images/dot.gif" />"</span><span style="COLOR: #0000ff">/&gt;</span></div><p>取出被装饰页面相关标签的属性值。 </p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">writeEntireProperty表明，是显示属性的值还是显示“属性=值”</span></div><p>Html标签的属性<br />Body标签的属性<br />Meta标签的属性</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">注意如果其content值中包含“&gt;或</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">”会报错，需转码，例如&amp;lt</span><span style="COLOR: #ff0000">;等等</span></div><p>default是默认值</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator:usePage </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="<img src="http://www.blogjava.net/images/dot.gif" />"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span></div><p> <font color="#0000ff"><strong>将被装饰页面构造为一个对象，可以在装饰页面的JSP中直接引用</strong></font>。 </p><p>6）看一个在装饰模板中使用标签的例子</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html </span><span style="COLOR: #ff0000">lang</span><span style="COLOR: #0000ff">=“ <strong><u>&lt;decorator:getProperty </u></strong></span><span style="COLOR: #ff0000"><strong><u>property</u></strong></span><span style="COLOR: #0000ff"><strong><u>=‘lang’/&gt;</u></strong> ”&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #ff0000">&lt;head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> </span><strong><u><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator:title </span><span style="COLOR: #ff0000">default</span><span style="COLOR: #0000ff">=“你好” </span></u></strong><span style="COLOR: #0000ff"><strong><u>/&gt;</u></strong> &lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><strong><u><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator:head </span><span style="COLOR: #0000ff">/&gt;</span></u></strong><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body </span><strong><u><span style="COLOR: #ff0000">&lt;decorator:getProperty property</span><span style="COLOR: #0000ff">=“body.onload" </span><span style="COLOR: #ff0000">writeEntireProperty</span></u></strong><span style="COLOR: #0000ff"><strong><u>=“1"/&gt;</u></strong> &gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span><span style="COLOR: #ff0000">从meta中获取变量company的名称：<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            <u> &lt;decorator:getProperty property</u></span><span style="COLOR: #0000ff"><u>=“meta.company”/&gt;<br /></u><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #ff0000">下面是被修饰页面的body中的内容：<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />             <u>&lt;decorator:body </u></span><span style="COLOR: #0000ff"><u>/&gt;</u></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span><u><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">decorator:usePage </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">=“myPage" </span><span style="COLOR: #0000ff">/&gt;</span></u><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span><u><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">%=myPage</span><span style="COLOR: #ff0000">.getRequest().getAttribute(“username”)%</span><span style="COLOR: #0000ff">&gt;</span></u><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span></div><p>7）看一下相应的在被修饰页面中的代码：</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html </span><span style="COLOR: #ff0000">lang</span><span style="COLOR: #0000ff">=“en”&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #ff0000">&lt;head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">我的sitemesh</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">meta </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">=“company” </span><span style="COLOR: #ff0000">content</span><span style="COLOR: #0000ff">=“smartdot”/&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #ff0000">&lt;meta name</span><span style="COLOR: #0000ff">=“Author” </span><span style="COLOR: #ff0000">content</span><span style="COLOR: #0000ff">=“zhangsan”/&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #ff0000">&lt;script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />             function count(){return 10;}<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body </span><span style="COLOR: #ff0000">onload</span><span style="COLOR: #0000ff">=“count()”&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span><span style="COLOR: #ff0000">&lt;p</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">这是一个被修饰页面</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">p</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span></div><p>四，总结<br /><br />1，Sitemesh最为重要的就是做用于修饰的模板，并在decorators.xml中配置这些模板用于修饰哪些页面。因此使用Sitemesh的主要过程就是：<font color="#0000ff"><strong><u>做装饰模板</u></strong></font>，然后<u><font color="#0000ff"><strong>在decorators.xml中配置URL Pattern</strong></font><br /><br /></u>2，分析整个工程，看哪些页面需要抽象成模板，例如二级页面、三级页面、弹出窗口等等可能都需要做成相应的模板，一般来说，一个大型的OA系统，模板不会超过8个。</p><img src ="http://www.blogjava.net/liuwentao253/aggbug/68447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-09-08 10:21 <a href="http://www.blogjava.net/liuwentao253/archive/2006/09/08/68447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SiteMesh介绍</title><link>http://www.blogjava.net/liuwentao253/archive/2006/09/08/68420.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Fri, 08 Sep 2006 00:50:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/09/08/68420.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 以前我通常使用旧式的方法来建立自己的web应用：手工排版，仔细使用每一个字节使其工作在Unicode下，同时使用make文件来适应不同的CPU……		或许现在我们可以换一种方式。		尽管我从没有感觉到需要使用assembly (CISC or RISC)来建立web应用，但也会偶尔觉得我的开发伙伴的工作相当繁琐。特别是我发现很多的开发者在痛苦的寻求一种比较好的方式来控制web应用的基本模块...&nbsp;&nbsp;<a href='http://www.blogjava.net/liuwentao253/archive/2006/09/08/68420.html'>阅读全文</a><img src ="http://www.blogjava.net/liuwentao253/aggbug/68420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-09-08 08:50 <a href="http://www.blogjava.net/liuwentao253/archive/2006/09/08/68420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>readAppfuse-4-Sitemesh使用</title><link>http://www.blogjava.net/liuwentao253/archive/2006/09/07/68323.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Thu, 07 Sep 2006 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/09/07/68323.html</guid><description><![CDATA[
		<p>一 ： 作用：sitemesh应用Decorator模式，用filter截取request和response,把页面组件</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">head<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />content<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />banner</span>
		</div>
		<p>结合为一个完整的视图。</p>
		<p>
				<br />二 ： appfuse的使用：</p>
		<p>（1）在WEB-INF/web.xml中的过滤器的定义</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">sitemesh</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        com.opensymphony.module.sitemesh.filter.PageFilter<br /></span>
				<span style="COLOR: #008080">5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
		<br />
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">mapping</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">sitemesh</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_68_172_Open_Image" onclick="this.style.display='none'; Codehighlighter1_68_172_Open_Text.style.display='none'; Codehighlighter1_68_172_Closed_Image.style.display='inline'; Codehighlighter1_68_172_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_68_172_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_68_172_Closed_Text.style.display='none'; Codehighlighter1_68_172_Open_Image.style.display='inline'; Codehighlighter1_68_172_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">url</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">pattern</span>
				<span style="COLOR: #000000">&gt;</span>
				<span id="Codehighlighter1_68_172_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_68_172_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">&lt;/url-pattern&gt;<br /></span>
						<span style="COLOR: #008080">4</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">5</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;<br /></span>
						<span style="COLOR: #008080">6</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;<br /></span>
						<span style="COLOR: #008080">7</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> &lt;/filter-mapping&gt;</span>
				</span>
		</div>
		<p>
				<br />（2）common/taglibs.jsp中的标签申明，只是命名说明，具体调用时，应用会在WEB-INF/lib中的对应的sitemesh-x.x.jar中定位。</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ taglib uri</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">http://www.opensymphony.com/sitemesh/decorator</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> prefix</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">decorator</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ taglib uri</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">http://www.opensymphony.com/sitemesh/page</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> prefix</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">page</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">%&gt;</span>
		</div>
		<p>
				<br />（3）WEB-INF/sitemesh.xml文件（可选），进行sitemesh配置</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">sitemesh</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">property name</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">decorators-file</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> value</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/WEB-INF/decorators.xml</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">excludes file</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">${decorators-file}</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080"> 4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">page</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">parsers</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">parser </span>
				<span style="COLOR: #0000ff">default</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">true</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">com.opensymphony.module.sitemesh.parser.HTMLPageParser</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">parser content</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/html</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">com.opensymphony.module.sitemesh.parser.HTMLPageParser</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 7</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">parser content</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/html;charset=ISO-8859-1</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">com.opensymphony.module.sitemesh.parser.HTMLPageParser</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 8</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">page</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">parsers</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 9</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080">10</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorator</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">mappers</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">11</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">mapper </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">12</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">param name</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">config</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> value</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">${decorators-file}</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080">13</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">mapper</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">14</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">decorator</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">mappers</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">15</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">sitemesh</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
		<p>（4）WEB-INF/decorators.xml文件，指定具体的装饰页。</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorators defaultdir</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/decorators</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">excludes</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img id="Codehighlighter1_80_220_Open_Image" onclick="this.style.display='none'; Codehighlighter1_80_220_Open_Text.style.display='none'; Codehighlighter1_80_220_Closed_Image.style.display='inline'; Codehighlighter1_80_220_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_80_220_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_80_220_Closed_Text.style.display='none'; Codehighlighter1_80_220_Open_Image.style.display='inline'; Codehighlighter1_80_220_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pattern</span>
				<span style="COLOR: #000000">&gt;/</span>
				<span style="COLOR: #000000">resources</span>
				<span id="Codehighlighter1_80_220_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_80_220_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">&lt;/pattern&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;/excludes&gt; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;decorator name="default" page="default.jsp"&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        &lt;pattern&gt;/*&lt;/pattern&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;/decorator&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&lt;/decorators&gt;</span>
				</span>
		</div>
		<p>
				<br />（5）装饰页/decorators/default.jsp的主要内容。</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;!</span>
				<span style="COLOR: #000000">DOCTYPE html PUBLIC </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">-//W3C//DTD XHTML 1.0 Transitional//EN</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ include file</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/common/taglibs.jsp</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">html xmlns</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">http://www.w3.org/1999/xhtml</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> xml:lang</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">en</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">head</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ include file</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/common/meta.jsp</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">title</span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">decorator:title</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">fmt:message key</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">webapp.name</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;&lt;/</span>
				<span style="COLOR: #000000">title</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">link rel</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">stylesheet</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/css</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> media</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">all</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> href</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;c:url value='/styles/${appConfig[</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">theme</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">]}/theme.css'/&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">link rel</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">stylesheet</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/css</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> media</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">print</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> href</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;c:url value='/styles/${appConfig[</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">theme</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">]}/print.css'/&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">script type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/javascript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> src</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;c:url value='/scripts/prototype.js'/&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">script type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/javascript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> src</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;c:url value='/scripts/scriptaculous.js'/&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">script type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/javascript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> src</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;c:url value='/scripts/global.js'/&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorator:head</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">head</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">body</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorator:getProperty property</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">body.id</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> writeEntireProperty</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">true</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;&lt;</span>
				<span style="COLOR: #000000">decorator:getProperty property</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">body.class</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> writeEntireProperty</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">true</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">div id</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">page</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">div id</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">header</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">clearfix</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">jsp:include page</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/common/header.jsp</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">div</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">div id</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">content</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">clearfix</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">div id</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">main</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                </span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ include file</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/common/messages.jsp</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">h1</span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">decorator:getProperty property</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">page.heading</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;&lt;/</span>
				<span style="COLOR: #000000">h1</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorator:body</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">div</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">c:set var</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">currentMenu</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> scope</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">request</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">decorator:getProperty property</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">meta.menu</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;&lt;/</span>
				<span style="COLOR: #000000">c:set</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">c:</span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> test</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">${currentMenu == 'AdminMenu'}</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">div id</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">sub</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">menu:useMenuDisplayer name</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">Velocity</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> config</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">WEB-INF/classes/cssVerticalMenu.vm</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> permissions</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">rolesAdapter</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">menu:displayMenu name</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">AdminMenu</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">menu:useMenuDisplayer</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">div</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">c:</span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">div id</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">nav</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">div </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">wrapper</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">h2 </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">accessibility</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">Navigation</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">h2</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">jsp:include page</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/WEB-INF/pages/menu.jsp</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">div</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">hr </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">div</span>
				<span style="COLOR: #000000">&gt;&lt;!--</span>
				<span style="COLOR: #000000"> end nav </span>
				<span style="COLOR: #000000">--&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">div</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">div id</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">footer</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">clearfix</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">jsp:include page</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/common/footer.jsp</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">div</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">div</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">body</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">html</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
<img src ="http://www.blogjava.net/liuwentao253/aggbug/68323.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-09-07 17:14 <a href="http://www.blogjava.net/liuwentao253/archive/2006/09/07/68323.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AppFuse中的SiteMesh问题 </title><link>http://www.blogjava.net/liuwentao253/archive/2006/08/18/64404.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Fri, 18 Aug 2006 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/08/18/64404.html</guid><description><![CDATA[
		<div class="diaryTime">       因为AppFuse中使用的默认的JSP模板为SiteMesh，默认情况下，所有的请求都会被SiteMesh所装饰，所以我要实现点击文件链接，直接下载文件时却得不到正确格式的文件，得到的是一个html文件，即使制定了下载文件的类型：如：application/msexcel或者其他的类型都不行，我分析是因为，我首先向输出流中写了些东西，后来被SiteMesh使用getWriter方法给冲掉了，所以得到的是默认的网页文件，我折腾了2天，痛不欲生，刚刚解决掉这个问题，解决方法如下：<br /><br />1.将下载文件的jsp放到一个特殊的目录下，我的放在download目录，这样可以区分需要被sitemesh装饰和不需要被它装饰的文件。<br /><br />2.配置sitemesh的decorators.xml:<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">decorators defaultdir</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/decorators</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">excludes</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img id="Codehighlighter1_79_122_Open_Image" onclick="this.style.display='none'; Codehighlighter1_79_122_Open_Text.style.display='none'; Codehighlighter1_79_122_Closed_Image.style.display='inline'; Codehighlighter1_79_122_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_79_122_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_79_122_Closed_Text.style.display='none'; Codehighlighter1_79_122_Open_Image.style.display='inline'; Codehighlighter1_79_122_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">pattern</span><span style="COLOR: #000000">&gt;/</span><span style="COLOR: #000000">download</span><span id="Codehighlighter1_79_122_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_79_122_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&lt;/pattern&gt;<br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;/excludes&gt; <br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&lt;/decorators&gt;</span></span></div><br /><br />这个配置指明download下的文件不需要被sitemesh装饰。<br /><br /><br />我的下载文件的页面代码是试验代码，稍加修改就可以正式使用，代码如下：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;%</span><span style="COLOR: #000000">@ page </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">java.io.*,java.net.*</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;%</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img id="Codehighlighter1_53_410_Open_Image" onclick="this.style.display='none'; Codehighlighter1_53_410_Open_Text.style.display='none'; Codehighlighter1_53_410_Closed_Image.style.display='inline'; Codehighlighter1_53_410_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_53_410_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_53_410_Closed_Text.style.display='none'; Codehighlighter1_53_410_Open_Image.style.display='inline'; Codehighlighter1_53_410_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">try</span><span id="Codehighlighter1_53_410_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_53_410_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">取得虚拟的路径</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        String fn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">attachment; filename=a.xls</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">必须改为UniCode编码的字符串</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        System.out.println(fn);<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">把标题、内容写到输出流中</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        response.setHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Content-Disposition</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> String(fn.getBytes(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">GB2312</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                                        </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ISO-8859-1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        createOutput( response.getOutputStream(),</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">c:\\ltf.xls</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img id="Codehighlighter1_432_468_Open_Image" onclick="this.style.display='none'; Codehighlighter1_432_468_Open_Text.style.display='none'; Codehighlighter1_432_468_Closed_Image.style.display='inline'; Codehighlighter1_432_468_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_432_468_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_432_468_Closed_Text.style.display='none'; Codehighlighter1_432_468_Open_Image.style.display='inline'; Codehighlighter1_432_468_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    }</span></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">( Exception ee )</span><span id="Codehighlighter1_432_468_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_432_468_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ee.printStackTrace();<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">%&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;%!</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img id="Codehighlighter1_557_804_Open_Image" onclick="this.style.display='none'; Codehighlighter1_557_804_Open_Text.style.display='none'; Codehighlighter1_557_804_Closed_Image.style.display='inline'; Codehighlighter1_557_804_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_557_804_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_557_804_Closed_Text.style.display='none'; Codehighlighter1_557_804_Open_Image.style.display='inline'; Codehighlighter1_557_804_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> createOutput( OutputStream out,String realpath ) </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> IOException </span><span id="Codehighlighter1_557_804_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_557_804_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> b;<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    BufferedInputStream  m_input </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> BufferedInputStream( </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  FileInputStream(realpath) );<br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img id="Codehighlighter1_719_747_Open_Image" onclick="this.style.display='none'; Codehighlighter1_719_747_Open_Text.style.display='none'; Codehighlighter1_719_747_Closed_Image.style.display='inline'; Codehighlighter1_719_747_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_719_747_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_719_747_Closed_Text.style.display='none'; Codehighlighter1_719_747_Open_Image.style.display='inline'; Codehighlighter1_719_747_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">( (b </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> m_input.read()) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"> )</span><span id="Codehighlighter1_719_747_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_719_747_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        out.write(b);<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    m_input.close();<br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    out.flush();<br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    out.close();<br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">%&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;%--</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 得到文件名字和路径</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">30</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  String filename </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> request.getParameter(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zipfilename</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">String jsppath = "";             getServletConfig().getServletContext().getRealPath("") + </span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">32</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">   String filepath </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">c:\\ltf.xls</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">jsppath.substring(0,jsppath.lastIndexOf("")) + "reports\\";</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">33</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">---------------=================</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> filepath);<br /></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  java.io.FileInputStream fileInputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">out.println(filepath);<br /></span><span style="COLOR: #008080">36</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 设置响应头和下载保存的文件名</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">37</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">  response.setHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Content-Disposition</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">attachment; filename=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a.xls</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  response.setContentType(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">application/msexcel</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 打开指定文件的流信息</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">42</span><span style="COLOR: #008000"><img id="Codehighlighter1_1411_1657_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1411_1657_Open_Text.style.display='none'; Codehighlighter1_1411_1657_Closed_Image.style.display='inline'; Codehighlighter1_1411_1657_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1411_1657_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1411_1657_Closed_Text.style.display='none'; Codehighlighter1_1411_1657_Open_Image.style.display='inline'; Codehighlighter1_1411_1657_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">try</span><span id="Codehighlighter1_1411_1657_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1411_1657_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  fileInputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> java.io.FileInputStream(filepath);<br /></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 写出流信息</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">47</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i;<br /></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img id="Codehighlighter1_1541_1562_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1541_1562_Open_Text.style.display='none'; Codehighlighter1_1541_1562_Closed_Image.style.display='inline'; Codehighlighter1_1541_1562_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1541_1562_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1541_1562_Closed_Text.style.display='none'; Codehighlighter1_1541_1562_Open_Image.style.display='inline'; Codehighlighter1_1541_1562_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ((i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">fileInputStream.read()) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_1541_1562_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1541_1562_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   out.write(i);<br /></span><span style="COLOR: #008080">50</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">51</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  fileInputStream.close();<br /></span><span style="COLOR: #008080">52</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  out.close();<br /></span><span style="COLOR: #008080">53</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">---OK---------------</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">54</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /></span><span style="COLOR: #008080">55</span><span style="COLOR: #000000"><img id="Codehighlighter1_1677_1707_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1677_1707_Open_Text.style.display='none'; Codehighlighter1_1677_1707_Closed_Image.style.display='inline'; Codehighlighter1_1677_1707_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1677_1707_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1677_1707_Closed_Text.style.display='none'; Codehighlighter1_1677_1707_Open_Image.style.display='inline'; Codehighlighter1_1677_1707_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  }</span></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(Exception ee)</span><span id="Codehighlighter1_1677_1707_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1677_1707_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">56</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    ee.printStackTrace();<br /></span><span style="COLOR: #008080">57</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">58</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">--%&gt;</span></div></div>
<img src ="http://www.blogjava.net/liuwentao253/aggbug/64404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-08-18 17:13 <a href="http://www.blogjava.net/liuwentao253/archive/2006/08/18/64404.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用SiteMesh简化网页布局 </title><link>http://www.blogjava.net/liuwentao253/archive/2006/08/18/64356.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Fri, 18 Aug 2006 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/08/18/64356.html</guid><description><![CDATA[
		<p>在公司项目使用了 Appfuse ，其带有 SiteMesh 对于网页布局简化让我感觉很好用，本文旨在对对 Sitemesh 的基本原理和在项目中使用 Sitemesh 的实现流程、使用技巧的介绍。 </p>
		<p>1.   基本原理 <br />SiteMesh 是以 Servlet 2.3 API 为基础(<font color="#ff1493" size="1">没记错的话tomcat支持最新版本servlet2.5</font>)。<br />它包含一个引擎，用来解析输出的网页或者网页片段，决定是否需要<font color="#000080"><strong>应用装饰器</strong></font>以及<font color="#0000ff"><strong>合并合适的装饰器</strong></font>。 </p>
		<p>       SiteMesh 与应用内容无关，适用的内容格式包括 : </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">Html <br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />JSP<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Servlet<br /></span>
				<span style="COLOR: #008080">4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />XSL<br /></span>
				<span style="COLOR: #008080">5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />甚至 CGI </span>
		</div>
		<p>2.   实现流程 <br />1）  当为 Servlet 容器指定一个 Http 请求时， SiteMesh 截取请求，使用一个 Servlet Filter ，然后捕捉 Html 结果。 </p>
		<p>2）  然后这个 Html 被解析，并且任何相关的内容都被提取到一个 Page 对象中。 </p>
		<p>3）  询问 DecoratorMapper 来确定那一个装饰器需要被应用。 </p>
		<p>4）  Servlet 向包含装饰器的 JSP 发送请求。 </p>
		<p>5 ）装饰器生成带有从 page 对象中获得的内容的 Html 布局。 </p>
		<p>大致流程如下图：</p>
		<p>
				<img src="http://www.blogjava.net/images/blogjava_net/faith/13332/o_Sitemesh%e6%b5%81%e7%a8%8b.jpg" />
				<br />
				<br /> Sitemesh 这样的好处是: </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">所有具体业务页面的开发者无需考虑该页面将处在最终输出页面的那个位置。<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />无需 include 一大堆页面，<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />以后如果系统整体改版，那么只需要改写装饰器页面及重新配置装饰规则即可完成<br /></span>
				<span style="COLOR: #008080">4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />方便快捷，可维护性极好。</span>
		</div>
		<p>
				<br />3.   在项目中使用 Sitemesh <br />1.         将 sitemesh_[version].jar 包加到 WEB-INF\lib 下 </p>
		<p>2.         在 web.xml 中增加 </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> sitemesh </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> com.opensymphony.module.sitemesh.filter.PageFilter </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 7</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">mapping</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 8</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> sitemesh </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 9</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_227_266_Open_Image" onclick="this.style.display='none'; Codehighlighter1_227_266_Open_Text.style.display='none'; Codehighlighter1_227_266_Closed_Image.style.display='inline'; Codehighlighter1_227_266_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_227_266_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_227_266_Closed_Text.style.display='none'; Codehighlighter1_227_266_Open_Image.style.display='inline'; Codehighlighter1_227_266_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">url</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">pattern</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> </span>
				<span id="Codehighlighter1_227_266_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_227_266_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000"> &lt;/url-pattern&gt;  <br /></span>
						<span style="COLOR: #008080">10</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&lt;/filter-mapping&gt;  </span>
				</span>
		</div>
		<p>       <br />表示对系统中所有 url 请求均使用 sitemesh Filter 进行拦截。 </p>
		<p>3.  在 WEB-INF 下配置 sitemesh.xml 和 decorator.xml 配置文件。 </p>
		<p>Sitemesh.xml </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">sitemesh</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">property  name </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">decorators-file</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">  value </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/WEB-INF/decorators.xml</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">excludes  file </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">${decorators-file}</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">page</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">parsers</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">parser  </span>
				<span style="COLOR: #0000ff">default</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">true</span>
				<span style="COLOR: #000000">"</span> <span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.opensymphony.module.sitemesh.parser.HTMLPageParser</span><span style="COLOR: #000000">"</span> <span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">parser  content</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">type </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/html</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                    </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.opensymphony.module.sitemesh.parser.HTMLPageParser</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">parser  content</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">type </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/html;charset=ISO-8859-1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                    </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.opensymphony.module.sitemesh.parser.HTMLPageParser</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">page</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">parsers</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">decorator</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">mappers</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> print  </span><span style="COLOR: #000000">--&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">mapper  </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                  </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param  name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">decorator</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  value </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">printable</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                 </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param  name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">parameter.name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  value </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">printable</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                 </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param  name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">parameter.value</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  value </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">true</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">mapper</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">mapper  </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                 </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param  name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">config</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  value </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">${decorators-file}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">mapper</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">decorator</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">mappers</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">  <br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">sitemesh</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">  </span></div>
		<p> 在 sitemesh.xml 中配置了两个 <font color="#0000ff"><strong>DecoratorMapper</strong></font> ： </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">PrintableDecoratorMapper<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />ConfigDecoratorMapper </span>
		</div>
		<p>
				<font color="#0000ff">
						<strong>PrintableDecoratorMapper </strong>
				</font>是供打印专用，在 url 后加上 printable=true 即会使用 decorator.xml 中指定的 printable 装饰器来对页面进行装饰，一般来说打印页面是只需要打印本页面的内容，其余的如头、脚、导航栏、左右菜单等是不需要打印的，通过装饰器可以轻松实现打印页面的过滤。 <br /><br /><br />Decorator.xml </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorators  defaultdir </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/decorators</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">excludes</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_71_571_Open_Image" onclick="this.style.display='none'; Codehighlighter1_71_571_Open_Text.style.display='none'; Codehighlighter1_71_571_Closed_Image.style.display='inline'; Codehighlighter1_71_571_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_71_571_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_71_571_Closed_Text.style.display='none'; Codehighlighter1_71_571_Open_Image.style.display='inline'; Codehighlighter1_71_571_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pattern</span>
				<span style="COLOR: #000000">&gt;/</span>
				<span style="COLOR: #000000">demos</span>
				<span id="Codehighlighter1_71_571_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_71_571_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000"> &lt;/pattern&gt; <br /></span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        &lt;pattern&gt;/resources/* &lt;/pattern&gt; <br /></span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        &lt;pattern&gt;/test* &lt;/pattern&gt; <br /></span>
						<span style="COLOR: #008080"> 6</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        &lt;pattern&gt;/FCKeditor/* &lt;/pattern&gt; <br /></span>
						<span style="COLOR: #008080"> 7</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;/excludes&gt; <br /></span>
						<span style="COLOR: #008080"> 8</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 9</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;!--  decorator for print(has parameter: printable=true) --&gt; <br /></span>
						<span style="COLOR: #008080">10</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;decorator  name ="printable"  page ="decPrintable.jsp" /&gt; <br /></span>
						<span style="COLOR: #008080">11</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">12</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;decorator  name ="login"  page ="decLogin.jsp"&gt; <br /></span>
						<span style="COLOR: #008080">13</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        &lt;pattern&gt;*login* &lt;/pattern&gt; &lt;! —url 映射模式 --&gt; <br /></span>
						<span style="COLOR: #008080">14</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;/decorator&gt; <br /></span>
						<span style="COLOR: #008080">15</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">16</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;decorator  name ="default"  page ="decDefault.jsp"&gt; <br /></span>
						<span style="COLOR: #008080">17</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        &lt;pattern&gt;/* &lt;/pattern&gt;  &lt;! — 缺省的装饰器 --&gt; <br /></span>
						<span style="COLOR: #008080">18</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    &lt;/decorator&gt; <br /></span>
						<span style="COLOR: #008080">19</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">20</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&lt;/decorators&gt; </span>
				</span>
		</div>
		<p>
				<br />4.  创建一个装饰器 JSP 页面，我建议所有装饰器页面放到 decorators 目录，并且以 dec[ 功能 ].jsp 作为命名方式，如 </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">decPrintable.jsp<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />decDefault.jsp </span>
		</div>
		<p>下面是一个装饰器的代码：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&lt;!</span>
				<span style="COLOR: #000000"> DOCTYPE html PUBLIC  </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> -//W3C//DTD XHTML 1.0 Transitional//EN </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span>
				<span style="COLOR: #008080"> 4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;%--</span>
				<span style="COLOR: #000000">  Include common set of tag library declarations  </span>
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000">  each layout  </span>
				<span style="COLOR: #000000">--%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080"> 5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000"> @ include file </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> /common/taglibs.jsp </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080"> 6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /></span>
				<span style="COLOR: #008080"> 7</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">html xmlns </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> http://www.w3.org/1999/xhtml </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">  xml:lang </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> en </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080"> 8</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">head</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 9</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorator:head</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080">10</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">head</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080">11</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">body<br /></span>
				<span style="COLOR: #008080">12</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorator:getProperty property </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> body.id </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">  writeEntireProperty </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> true </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080">13</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorator:getProperty property </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> body.onload </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">  writeEntireProperty </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> true </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080">14</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorator:getProperty property </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> body.onunload </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">  writeEntireProperty </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> true </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080">15</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">       <br /></span>
				<span style="COLOR: #008080">16</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000"> @ include file </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> /common/header.jsp </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080">17</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">h1</span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">decorator:getProperty property </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> page.heading </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;&lt;/</span>
				<span style="COLOR: #000000">h1</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">   <br /></span>
				<span style="COLOR: #008080">18</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000"> @ include file </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> /common/messages.jsp </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">   </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080">19</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">decorator:body</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080">20</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">jsp:include page </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> /common/footer.jsp </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080">21</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">body</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080">22</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">html</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> </span>
		</div>
		<p>注意其 &lt;decorator:…&gt; 标签,如 ：<span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">decorator:head</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"> </span>，这些标签将被装饰的 <font color="#0000ff"><strong>page 页面的相应内容</strong></font>作为属性传入。 Page 页面的相关内容将放在 decorator 标签所指定的位置。</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">Title ：标题 <br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Head ：头部，一般是公共的 js 、 css 及 meta <br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Body ：被装饰的 page 的主体内容</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p> 5 、 Sitemesh 通过 ：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">在 sitemesh.xml 中配置 DecoratorMapper 配置映射器<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />在 decorator.xml 中配置装饰器文件及其匹配方式</span>
		</div>
		<p>当有页面需要输出到客户端时，将根据这些配置选择相应的装饰器来进行装饰，将装饰结果返回给客户界面。 </p>
		<p>
		</p>
		<p>4.   参考资料 <br />关于 Sitemesh 的 api 及详细使用说明可以参看其官方网站 </p>
		<p>
				<a href="http://www.opensymphony.com/sitemesh">http://www.opensymphony.com/sitemesh</a>
		</p>
		<p> </p>
<img src ="http://www.blogjava.net/liuwentao253/aggbug/64356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-08-18 15:16 <a href="http://www.blogjava.net/liuwentao253/archive/2006/08/18/64356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>