﻿<?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-不知不觉-文章分类-Java杂记</title><link>http://www.blogjava.net/ECyzl2007/category/26640.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 30 Nov 2007 07:08:09 GMT</lastBuildDate><pubDate>Fri, 30 Nov 2007 07:08:09 GMT</pubDate><ttl>60</ttl><item><title>[原]简单使用Sitemesh来组装Web页面</title><link>http://www.blogjava.net/ECyzl2007/articles/163535.html</link><dc:creator>Magic.Yang</dc:creator><author>Magic.Yang</author><pubDate>Tue, 27 Nov 2007 12:03:00 GMT</pubDate><guid>http://www.blogjava.net/ECyzl2007/articles/163535.html</guid><wfw:comment>http://www.blogjava.net/ECyzl2007/comments/163535.html</wfw:comment><comments>http://www.blogjava.net/ECyzl2007/articles/163535.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ECyzl2007/comments/commentRss/163535.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ECyzl2007/services/trackbacks/163535.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt;"><span style="font-size: 10pt;"><span style="font-size: 10pt;"><sup></sup></span></span></span><span style="font-size: 10pt;"><sup><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; Sitemesh是一个基于页面过滤器的框架，能提高页面的重用性和可维护性，效果则类似于HTML的iframe和JSP的include语句，但是它通过过滤器读取配置文件的信息即可，不必在每个被装饰的页面去编写引用语句。<br />
</span><br />
<span style="font-size: 10pt;">
使用步骤很简单：<br />
1、将Sitemesh的jar包（目前版本是2.3）放到/WEB-INF/lib目录下.<br />
<br />
2、在[web-app]/WEB-INF/目录下创建decorators.xml文件：</span></sup></span><sup><br />
<br />
</sup><span style="font-size: 10pt;">decorators.xml</span><sup><br />
</sup>
<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;">decorators</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">decorators</span><span style="color: #000000;">&gt;<br />
</span></div>
<code></code><span style="font-size: 12pt;"><span style="font-size: 14pt;"><span style="font-size: 24pt;"><br />
<span style="font-size: 8pt;"><span style="font-size: 10pt;"><span style="font-size: 8pt;">3、<span style="font-size: 10pt;"><span style="font-size: 12pt;"></span></span><span style="font-size: 12pt;"><span style="font-size: 10pt;">在[web-app]/WEB-INF/目录下创建sitemesh.xml文件：<br />
<br />
</span></span></span>sitemesh.xml<br />
</span></span></span></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;">&lt;</span><span style="color: #000000;">sitemesh</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;">property&nbsp;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;">&nbsp;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;">&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;">excludes&nbsp;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;">&nbsp;</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;">page</span><span style="color: #000000;">-</span><span style="color: #000000;">parsers</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;">parser&nbsp;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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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;">&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;">parser&nbsp;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=GBK</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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;">&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;">page</span><span style="color: #000000;">-</span><span style="color: #000000;">parsers</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;">decorator</span><span style="color: #000000;">-</span><span style="color: #000000;">mappers</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;">mapper 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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">param&nbsp;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;">&nbsp;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;">&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;">mapper</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</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: #000000;">&lt;/</span><span style="color: #000000;">sitemesh</span><span style="color: #000000;">&gt;</span></div>
<br />
<span style="font-size: 10pt;"><span style="font-size: 10pt;"><span style="font-size: 10pt;">4</span>、在web.xml中添加：<br />
<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;">&lt;</span><span style="color: #000000;">filter</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;">-</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;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">filter-</span><span style="color: #000000;">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;">-class&gt;</span><span style="color: #000000;"><br />
</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: #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;</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;</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;/*&lt;/url-pattern&gt;<br />
&lt;filter-mapping&gt;</span><span style="color: #008000;"></span></div>
<br />
<span style="font-size: 10pt;"><span style="font-size: 10pt;">5、在[web-app]下面创建decorators目录，在此目录下创建几个页面（可以使用各种不同视图技术）：<br />
<br />
</span></span><sup>main.jsp<br />
</sup>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;">&lt;%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %&gt;<br />
&lt;%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page" %&gt;<br />
<span style="color: #000000;">&lt;</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;decorator:head /&gt;<br />
<span style="color: #000000;">&nbsp;&nbsp;&nbsp; &lt;/</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;<br />
&nbsp;&nbsp;&nbsp; </span>&lt;div align="center"&gt;<br />
<span style="color: #000000;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #000000;">table&nbsp;width</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">100%</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;height</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">100%</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;border</span><span style="color: #000000;">=</span><span style="color: #000000;">"0</span><span style="color: #000000;">"</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;">tr</span><span style="color: #000000;">&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">td colspan="2" valign</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">top</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;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">page:applyDecorator&nbsp;page</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/decorators/banner.jsp</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">banner</span><span style="color: #000000;">"</span>&nbsp;<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;">td</span><span style="color: #000000;">&gt;</span><br />
<span style="color: #000000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="15%"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">page:applyDecorator&nbsp;page</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/decorators/menu.jsp</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">menu</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">/&gt;</span><br />
<span style="color: #000000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="85%"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &lt;decorator:body /&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/td&gt; &nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  &lt;/tr&gt;</span><span style="color: #000000;">&nbsp;  </span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">tr</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">td colspan="2"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">page:applyDecorator&nbsp;page</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/decorators/footer.jsp</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;name</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;">&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">td</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;">tr</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp; </span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">table</span><span style="color: #000000;">&gt;<br />
</span>&nbsp; &lt;/div&gt;<br />
<span style="color: #000000;">&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>
<br />
<sup><br />
menu.jsp<br />
</sup>
<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;html&gt;<br />
&lt;head&gt;&lt;/head&gt;<br />
<br />
&lt;body&gt;<br />
&lt;div align="center"&gt;<br />
&nbsp;&nbsp;&nbsp; This is menu.jsp<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</div>
<br />
<sup><br />
banner.jsp<br />
</sup>
<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;html&gt;<br />
&lt;head&gt;&lt;/head&gt;<br />
<br />
&lt;body&gt;<br />
&lt;div align="center"&gt;<br />
&nbsp;&nbsp;&nbsp; This is banner.jsp<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</div>
<br />
<sup><br />
footer.jsp<br />
</sup>
<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;html&gt;<br />
&lt;head&gt;&lt;/head&gt;<br />
<br />
&lt;body&gt;<br />
&lt;div align="center"&gt;<br />
&nbsp;&nbsp;&nbsp; This is footer.jsp<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</div>
<br />
<span style="font-size: 10pt;">6、在[web-app]下创建一个被装饰的页面<br />
<br />
index.jsp</span><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;html&gt;<br />
&lt;head&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;index.jsp&lt;title&gt;<br />
&lt;/head&gt;<br />
<br />
&lt;body&gt;<br />
&lt;div align="center"&gt;<br />
&nbsp;&nbsp;&nbsp; This is index.jsp<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</div>
<span style="font-size: 10pt;"><br />
7、在decorator.xml中添加：<br />
</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 />
-->&lt;decorators defaultdir="/decorators"&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;decorator name="main" page="main.jsp"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pattern&gt;/*&lt;/pattern&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/decorator&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;decorator name="banner" page="banner.jsp"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;decorator name="menu" page="menu.jsp"/&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;decorator name="footer" page="footer.jsp"/&gt;<br />
<br />
&lt;/decorators&gt;</div>
<br />
<span style="font-size: 10pt;">这样，就能把各个页面简单地组装到一起了，以后所有的页面都会被组装成类似的布局，对于不需要这种布局装饰的页面（如：login.jsp），只需在decorator中添加：<br />
<br />
</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 />
-->&lt;excludes&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pattern&gt;/login.jsp&lt;/pattern&gt;<br />
&lt;/excludes&gt;<br />
</div>
<br />
<img src ="http://www.blogjava.net/ECyzl2007/aggbug/163535.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ECyzl2007/" target="_blank">Magic.Yang</a> 2007-11-27 20:03 <a href="http://www.blogjava.net/ECyzl2007/articles/163535.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Log4j路径问题解决方案</title><link>http://www.blogjava.net/ECyzl2007/articles/153799.html</link><dc:creator>Magic.Yang</dc:creator><author>Magic.Yang</author><pubDate>Thu, 18 Oct 2007 03:24:00 GMT</pubDate><guid>http://www.blogjava.net/ECyzl2007/articles/153799.html</guid><wfw:comment>http://www.blogjava.net/ECyzl2007/comments/153799.html</wfw:comment><comments>http://www.blogjava.net/ECyzl2007/articles/153799.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ECyzl2007/comments/commentRss/153799.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ECyzl2007/services/trackbacks/153799.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; Log4j的路径问题主要有两个：1、log4j.properties配置文件路径；2、输出的日志文件路径；<br />
<br />
&nbsp;&nbsp;&nbsp; 1、log4j.properties配置文件路径解决方案<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 它与其他java文件的读写一样。如果在web应用中，可以通过以下两个方法：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 方法一：将log4j.properties文件放到工程的WEB-INF目录下，然后通过下面代码来初始化log4j.properties文件的配置：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServletContext&nbsp;context&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getServlet().getServletContext();&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PropertyConfigurator.configure(context.getRealPath(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">) </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/WEB-INF/log4j.properties</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里的this.getServlet()是Struts的Action类里面的方法，如果是直接继承HttpServlet的话，则直接通过下面代码取得应用环境。
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ServletContext&nbsp;context&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;getServletContext(); <br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 方法二：直接查找log4j.properties。以Tomcat为例，如果你的log4j.properties文件放在project/conf（这里project就是应用的根目录）下，那么可以这样找到它：<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PropertyConfigurator.configure(../webapps/project/conf/log4j.properties);</span></div>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 为什么会是这样呢，因为在Tomcat中，所有的配置文件都是以Tomcat的bin目录为根目录的，实践证明的但具体原因不清楚。<br />
&nbsp;&nbsp;&nbsp; 2、输出的日志文件路径解决方案<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  这个跟方上个问题的方法二中一样。比如说，我要把log输出到工程project的logs目录下，那么在log4j.properties文件中这样写就可以了：<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; log4j.appender.R.File</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">..</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">webapps</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">project</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">logs</span><span style="color: rgb(0, 0, 0);">/log4j</span><span style="color: rgb(0, 0, 0);">.log</span></div>
<br />
&nbsp;&nbsp;&nbsp; 到这里，我们可以了看到，tomcat的部署的应用里的配置默认的根目录是%CATALINA_HOME%/bin，以后类似的路径问题从这里入手解决也就不困难了。<br />
&nbsp;&nbsp;&nbsp; <br />
<br />
<img src ="http://www.blogjava.net/ECyzl2007/aggbug/153799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ECyzl2007/" target="_blank">Magic.Yang</a> 2007-10-18 11:24 <a href="http://www.blogjava.net/ECyzl2007/articles/153799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>