﻿<?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-叮当小马的JavaBlog-文章分类-OpenSymphony</title><link>http://www.blogjava.net/dingdangxiaoma/category/30834.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 17 Apr 2008 09:34:01 GMT</lastBuildDate><pubDate>Thu, 17 Apr 2008 09:34:01 GMT</pubDate><ttl>60</ttl><item><title>sitemesh 简单入门 之三</title><link>http://www.blogjava.net/dingdangxiaoma/articles/193571.html</link><dc:creator>叮当小马</dc:creator><author>叮当小马</author><pubDate>Wed, 16 Apr 2008 13:16:00 GMT</pubDate><guid>http://www.blogjava.net/dingdangxiaoma/articles/193571.html</guid><wfw:comment>http://www.blogjava.net/dingdangxiaoma/comments/193571.html</wfw:comment><comments>http://www.blogjava.net/dingdangxiaoma/articles/193571.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dingdangxiaoma/comments/commentRss/193571.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dingdangxiaoma/services/trackbacks/193571.html</trackback:ping><description><![CDATA[<span style="color: red;">2008年4月16日 </span><span style="color: red;">20:45:55</span><span style="color: red;"> Edited by DingDangXiaoMa<br />
<span style="color: #1c0000;">sitemesh 与velocity ,freemarker 结合。(参考资料 sitemesh-example.war)<br />
准备：commmons-collections.jar, freemarker.jar sitemesh-2.3.jar velocity-dep-1.3.1.jar velocity-tools-view-1.1.jar<br />
(1)sitemesh 与velocity <br />
web.xml<br />
</span></span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</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;">-</span><span style="color: #000000;">velocity</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.opensymphony.module.sitemesh.velocity.VelocityDecoratorServlet<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">load</span><span style="color: #000000;">-</span><span style="color: #000000;">on</span><span style="color: #000000;">-</span><span style="color: #000000;">startup</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">10</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">load</span><span style="color: #000000;">-</span><span style="color: #000000;">on</span><span style="color: #000000;">-</span><span style="color: #000000;">startup</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">mapping</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</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;">-</span><span style="color: #000000;">velocity</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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;">.vm</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;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">mapping</span><span style="color: #000000;">&gt;</span></div>
decorators/velocity.vm<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">Velocity&nbsp;Decorator&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;$title</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">link&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">$base/decorators/main.css</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;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;">&nbsp;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;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$head<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">div&nbsp;id</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">pageTitle</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">$title</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">div</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">hr</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$body<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">div&nbsp;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;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">b</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">Disclaimer:</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">b</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;This&nbsp;site&nbsp;is&nbsp;an&nbsp;example&nbsp;site&nbsp;to&nbsp;demonstrate&nbsp;SiteMesh.&nbsp;It&nbsp;serves&nbsp;no&nbsp;other&nbsp;purpose.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">div</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</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: #000000;">&lt;/</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span></div>
与一次的代码是差不太多，只不过用$标记来代替以前的&lt;decorator:title /&gt; &lt;decorator:body /&gt;<br />
编写 WebRoot/velocity.html<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">Velocity&nbsp;Test</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">This&nbsp;page&nbsp;is&nbsp;decorated&nbsp;by&nbsp;the&nbsp;VelocityDecoratorServlet.</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">Go&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">a&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">index.html</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">back</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">a</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">.</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</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: #000000;">&lt;/</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span></div>
把velocity.html映射到velocity.vm上。<br />
WEB-INF/decorators.xml添加如下映射.<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">decorator&nbsp;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;">&nbsp;page</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">velocity.vm</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">pattern</span><span style="color: #000000;">&gt;/</span><span style="color: #000000;">velocity.html</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">pattern</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">decorator</span><span style="color: #000000;">&gt;</span></div>
再运行程序:http://localhost/sitemesh/velocity.html就可看到映射后的样式了， sitemesh与velocity结合。<br />
(2) sitemesh 与freemarker <br />
与上例同步。<br />
web.xml 加入如下servlet 映射：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</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;">-</span><span style="color: #000000;">freemarker</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">init</span><span style="color: #000000;">-</span><span style="color: #000000;">param</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">TemplatePath</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">value</span><span style="color: #000000;">&gt;/&lt;/</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">value</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">init</span><span style="color: #000000;">-</span><span style="color: #000000;">param</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">init</span><span style="color: #000000;">-</span><span style="color: #000000;">param</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">default_encoding</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">value</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">UTF-8</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">value</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">init</span><span style="color: #000000;">-</span><span style="color: #000000;">param</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">load</span><span style="color: #000000;">-</span><span style="color: #000000;">on</span><span style="color: #000000;">-</span><span style="color: #000000;">startup</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">1</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">load</span><span style="color: #000000;">-</span><span style="color: #000000;">on</span><span style="color: #000000;">-</span><span style="color: #000000;">startup</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">mapping</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</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;">-</span><span style="color: #000000;">freemarker</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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;">.ftl</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;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">mapping</span><span style="color: #000000;">&gt;</span></div>
添加：decorators/freemarker.ftl<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">Freemarker&nbsp;Decorator&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;${title}</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">link&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">${base}/decorators/main.css</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;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;">&nbsp;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;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${head}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">div&nbsp;id</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">pageTitle</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">${title}</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">div</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">hr</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${body}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">div&nbsp;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;">&gt;</span><span style="color: #000000;"><br />
&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">b</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">Disclaimer:</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">b</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;This&nbsp;site&nbsp;is&nbsp;an&nbsp;example&nbsp;site&nbsp;to&nbsp;demonstrate&nbsp;SiteMesh.&nbsp;It&nbsp;serves&nbsp;no&nbsp;other&nbsp;purpose.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">div</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</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: #000000;">&lt;/</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span></div>
添加：webRoot/freemarker.html<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">Freemarker&nbsp;Test</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">This&nbsp;page&nbsp;is&nbsp;decorated&nbsp;by&nbsp;the&nbsp;FreemarkerDecoratorServlet.</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">Go&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">a&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">index.html</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">back</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">a</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">.</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</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: #000000;">&lt;/</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span></div>
添加两者之间的映射：WEB-INF/decorators.xml<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">decorator&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">freemarker</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;page</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">freemarker.ftl</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">pattern</span><span style="color: #000000;">&gt;/</span><span style="color: #000000;">freemarker.html</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">pattern</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">decorator</span><span style="color: #000000;">&gt;</span></div>
运行http://localhost/sitemesh/freemarker.html .即可看到结果。<br />
今天就到这里，先这样吧。<br />
<br />
<img src ="http://www.blogjava.net/dingdangxiaoma/aggbug/193571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dingdangxiaoma/" target="_blank">叮当小马</a> 2008-04-16 21:16 <a href="http://www.blogjava.net/dingdangxiaoma/articles/193571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sitemesh 简单入门 之二</title><link>http://www.blogjava.net/dingdangxiaoma/articles/193534.html</link><dc:creator>叮当小马</dc:creator><author>叮当小马</author><pubDate>Wed, 16 Apr 2008 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/dingdangxiaoma/articles/193534.html</guid><wfw:comment>http://www.blogjava.net/dingdangxiaoma/comments/193534.html</wfw:comment><comments>http://www.blogjava.net/dingdangxiaoma/articles/193534.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dingdangxiaoma/comments/commentRss/193534.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dingdangxiaoma/services/trackbacks/193534.html</trackback:ping><description><![CDATA[2008年4月16日&nbsp; Edited By DingDangXiaoMa&nbsp; <br />
&nbsp;（1）printable 装饰及 page 用法。<br />
当要打印页面内容时，不想要一些边边框框。只关注想要的内容，设置为printable decorators 即可。<br />
sitemesh 设置方法如下：<br />
setemesh.xml <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->&lt;mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="decorator" value="printable" /&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="parameter.name" value="printable" /&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="parameter.value" value="true" /&gt;<br />
&lt;/mapper&gt;</div>
上面代码为设置&nbsp; 打印的属性及参数。?printable=true链接到打印模式上。<br />
decorators.xml<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">decorator&nbsp;name</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;">&nbsp;page</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">printable.jsp</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span></div>
功能：将name="printable" 的装饰映射到printable.jsp上。<br />
printable.jsp<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;%</span><span style="color: #000000;">@&nbsp;taglib&nbsp;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;">&nbsp;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;">&nbsp;</span><span style="color: #000000;">%&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">NO&nbsp;Title</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">decorator:head&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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:title&nbsp;&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">No Title</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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">p&nbsp;align</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">right</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;&lt;</span><span style="color: #000000;">i</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">(printable&nbsp;version)</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">i</span><span style="color: #000000;">&gt;&lt;/</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">decorator:body&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</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: #000000;">&lt;/</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span></div>
这是参照官方上的例子的printable.jsp.注意。当链接指向时，没有标题时，显示No Title .当没有body部分时，则会出现null point error(我出现了这个错误，不知道是不是我机子的问题)<br />
按照上述配置后：当访问：http://localhost/sitemesh/index.jsp?printable=true 时，就只能显示index.jsp未被修饰的数据。<br />
再进行修改就是在页面上加一个超级链接到些页面打印状态。<br />
在decorators/main.jsp中加入以下代码;<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #000000;">decorator:usePage&nbsp;id</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">p</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;%</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletRequest&nbsp;req&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p.getRequest();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;printUrl&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuffer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printUrl.append(&nbsp;req.getRequestURI()&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printUrl.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">?printable=true</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(request.getQueryString()</span><span style="color: #000000;">!=</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printUrl.append(</span><span style="color: #000000;">'</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">'</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printUrl.append(request.getQueryString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">%&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">p&nbsp;align</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">right</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">[&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">a&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;%=&nbsp;printUrl&nbsp;%&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">printable&nbsp;version</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">a</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;]</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span></div>
这样就在每个页面都添加上了，打印式的超级链接。 &lt;decorator:usePage id="p" /&gt; 是获得了页面的page对象。<br />
（2）page:applyDecorator 用法：把某一个页面进行某种样式的映射。&lt;page:applyDecorator page="*.jsp" name="*" /&gt;<br />
把*.jsp映射到decorators.xml 中定义的* 装饰上。<br />
例子：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">page:applyDecorator&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">panel</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;page</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/date.jsp</span><span style="color: #000000;">"</span><span style="color: #000000;"> &gt;</span><span style="color: #000000;"><br />
</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/dingdangxiaoma/aggbug/193534.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dingdangxiaoma/" target="_blank">叮当小马</a> 2008-04-16 18:07 <a href="http://www.blogjava.net/dingdangxiaoma/articles/193534.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sitemesh 简单入门</title><link>http://www.blogjava.net/dingdangxiaoma/articles/193362.html</link><dc:creator>叮当小马</dc:creator><author>叮当小马</author><pubDate>Wed, 16 Apr 2008 03:13:00 GMT</pubDate><guid>http://www.blogjava.net/dingdangxiaoma/articles/193362.html</guid><wfw:comment>http://www.blogjava.net/dingdangxiaoma/comments/193362.html</wfw:comment><comments>http://www.blogjava.net/dingdangxiaoma/articles/193362.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dingdangxiaoma/comments/commentRss/193362.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dingdangxiaoma/services/trackbacks/193362.html</trackback:ping><description><![CDATA[<span style="color: red;">2008年4月16日&nbsp; edited by dingdangxiaoma <br />
引用<font size="2">：</font></span><font size="2">sitemesh应用Decorator模式，用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。<br />
sitemesh 是OpenSymphony 组织下的子项目。<br />
准备：从官方下载 sitemesh包拷贝到你项目下的lib下。<br />
web.xml 添加以下内容。<br />
</font>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #000000;">filter</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.opensymphony.module.sitemesh.filter.PageFilter&nbsp; //这是个过滤器。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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 />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">filter</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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: #008000;">/*</span><span style="color: #008000;">&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/filter-mapping&gt;</span></div>
<font size="2">WEB-INF 下建立decorators.xml<br />
</font>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;?</span><span style="color: #000000;">xml&nbsp;version</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">1.0</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;encoding</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">UTF-8</span><span style="color: #000000;">"</span><span style="color: #000000;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">decorators&nbsp;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 />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">decorator&nbsp;name</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;">&nbsp;page</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">main.jsp</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--装饰页面--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">pattern</span><span style="color: #000000;">&gt;*&lt;/</span><span style="color: #000000;">pattern</span><span style="color: #000000;">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 装饰映射--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">decorator</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">decorators</span><span style="color: #000000;">&gt;</span></div>
在webroot 下新建：decorators/main.jsp<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;%</span><span style="color: #000000;">@&nbsp;page&nbsp;contentType</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">text/html;&nbsp;charset=GBK</span><span style="color: #000000;">"</span><span style="color: #000000;">%&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;%</span><span style="color: #000000;">@&nbsp;taglib&nbsp;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;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;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: #000000;">&lt;</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">decorator:title&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">decorators<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">decorator:head&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sitemesh的例子<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">hr</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">decorator:body&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">hr</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DingDangXiaoMa@</span><span style="color: #000000;">163</span><span style="color: #000000;">.com&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</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: #000000;">&lt;/</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span></div>
建立 index.jsp<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;%</span><span style="color: #000000;">@&nbsp;page&nbsp;contentType</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">text/html;&nbsp;charset=GBK</span><span style="color: #000000;">"</span><span style="color: #000000;">%&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">343</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">本页只有一句，就是本句.</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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: #000000;">&lt;/</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span></div>
当通过访问服务器时：http://localhost/sitemesh/index.jsp时。<br />
会看到：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">sitemesh的例子<br />
本页只有一句，就是本句.<br />
DingDangXiaoMa@</span><span style="color: #000000;">163</span><span style="color: #000000;">.com <br />
</span></div>
这就输出结果了。访问的结果自动装载上了main.jsp样式。这就是添加了sitemesh 过滤的结果。<br />
这就是一个简单的例子，只是说明了整个问题的应用，而没有涉及到各个细节问题。<br />
当然，sitemesh 还有很多内容。支持的视图不公包含了.jsp还有velocity freemarker等。<br />
参考资料：<br />
http://www.java3z.com/cwbwebhome/article/article2/2962.html?id=1668<br />
http://www.cjsdn.net/post/view?bid=29&amp;id=178862<br />
<br />
<img src ="http://www.blogjava.net/dingdangxiaoma/aggbug/193362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dingdangxiaoma/" target="_blank">叮当小马</a> 2008-04-16 11:13 <a href="http://www.blogjava.net/dingdangxiaoma/articles/193362.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>