﻿<?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-gdufo-随笔分类-Struts2</title><link>http://www.blogjava.net/gdufo/category/32634.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 30 Sep 2008 02:17:03 GMT</lastBuildDate><pubDate>Tue, 30 Sep 2008 02:17:03 GMT</pubDate><ttl>60</ttl><item><title>Struts2 中 Result的 Chain Result,Redirect Action Result,Redirect Result 三者之间的区别</title><link>http://www.blogjava.net/gdufo/archive/2008/09/28/231621.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sun, 28 Sep 2008 03:09:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/09/28/231621.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/231621.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2008/09/28/231621.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/231621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/231621.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gdufo/archive/2008/09/28/231621.html'>阅读全文</a><img src ="http://www.blogjava.net/gdufo/aggbug/231621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-09-28 11:09 <a href="http://www.blogjava.net/gdufo/archive/2008/09/28/231621.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eXtremeComponents安装配置</title><link>http://www.blogjava.net/gdufo/archive/2008/09/04/227052.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Thu, 04 Sep 2008 12:35:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/09/04/227052.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/227052.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2008/09/04/227052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/227052.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/227052.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gdufo/archive/2008/09/04/227052.html'>阅读全文</a><img src ="http://www.blogjava.net/gdufo/aggbug/227052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-09-04 20:35 <a href="http://www.blogjava.net/gdufo/archive/2008/09/04/227052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The Yahoo! User Interface Library (YUI)</title><link>http://www.blogjava.net/gdufo/archive/2008/08/28/225416.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Thu, 28 Aug 2008 13:23:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/08/28/225416.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/225416.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2008/08/28/225416.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/225416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/225416.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gdufo/archive/2008/08/28/225416.html'>阅读全文</a><img src ="http://www.blogjava.net/gdufo/aggbug/225416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-08-28 21:23 <a href="http://www.blogjava.net/gdufo/archive/2008/08/28/225416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS的正则表达式</title><link>http://www.blogjava.net/gdufo/archive/2008/08/26/224883.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 26 Aug 2008 14:57:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/08/26/224883.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/224883.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2008/08/26/224883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/224883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/224883.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gdufo/archive/2008/08/26/224883.html'>阅读全文</a><img src ="http://www.blogjava.net/gdufo/aggbug/224883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-08-26 22:57 <a href="http://www.blogjava.net/gdufo/archive/2008/08/26/224883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Appfuse 中使用到的 DisplayTag</title><link>http://www.blogjava.net/gdufo/archive/2008/08/25/224250.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Mon, 25 Aug 2008 11:53:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/08/25/224250.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/224250.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2008/08/25/224250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/224250.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/224250.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gdufo/archive/2008/08/25/224250.html'>阅读全文</a><img src ="http://www.blogjava.net/gdufo/aggbug/224250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-08-25 19:53 <a href="http://www.blogjava.net/gdufo/archive/2008/08/25/224250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Filter与interceptor的区别 </title><link>http://www.blogjava.net/gdufo/archive/2008/08/18/222866.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Mon, 18 Aug 2008 11:51:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/08/18/222866.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gdufo/archive/2008/08/18/222866.html'>阅读全文</a><img src ="http://www.blogjava.net/gdufo/aggbug/222866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-08-18 19:51 <a href="http://www.blogjava.net/gdufo/archive/2008/08/18/222866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实战Struts-Menu(5)</title><link>http://www.blogjava.net/gdufo/archive/2008/08/05/220180.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 05 Aug 2008 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/08/05/220180.html</guid><description><![CDATA[&gt; 新建JSP文件web/dynamic-menu.jsp，内容如下：<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img style="display: none" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: rgb(0,0,0); background-color: rgb(255,255,0)">&lt;%</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">@&nbsp;page&nbsp;contentType</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">=</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">text/html;&nbsp;charset=GBK</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;</span></span><span style="color: rgb(0,0,0); background-color: rgb(255,255,0)">%&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img style="display: none" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: rgb(0,0,0); background-color: rgb(255,255,0)">&lt;%</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">@&nbsp;taglib&nbsp;uri</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">=</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">struts-menu</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;prefix</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">=</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">menu</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;</span></span><span style="color: rgb(0,0,0); background-color: rgb(255,255,0)">%&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">p</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">没有使用Bundle和权限控制:<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:useMenuDisplayer&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="ListMenu"</span><span style="color: rgb(255,0,0)">&nbsp;repository</span><span style="color: rgb(0,0,255)">="examplesRepository"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:displayMenu&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="DatabaseMenu"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:displayMenu&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="StandaloneMenu"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">menu:useMenuDisplayer</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">p</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">p</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">使用Bundle,&nbsp;没有使用权限控制:<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:useMenuDisplayer&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="ListMenu"</span><span style="color: rgb(255,0,0)">&nbsp;bundle</span><span style="color: rgb(0,0,255)">="examplesBundle"</span><span style="color: rgb(255,0,0)">&nbsp;repository</span><span style="color: rgb(0,0,255)">="examplesRepository"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:displayMenu&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="DatabaseMenu"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:displayMenu&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="StandaloneMenu"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">menu:useMenuDisplayer</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">p</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">p</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">使用Bundle和权限控制:<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:useMenuDisplayer&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="ListMenu"</span><span style="color: rgb(255,0,0)">&nbsp;permissions</span><span style="color: rgb(0,0,255)">="examplesPermession"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;bundle</span><span style="color: rgb(0,0,255)">="examplesBundle"</span><span style="color: rgb(255,0,0)">&nbsp;repository</span><span style="color: rgb(0,0,255)">="examplesRepository"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:displayMenu&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="DatabaseMenu"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:displayMenu&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="StandaloneMenu"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">menu:useMenuDisplayer</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">p</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>七、关于Struts-Menu配置文件和API的使用方法，请参考附录中的官方网站</p>
<p><br />
附：<br />
Struts-Menu官方网站：<a href="http://struts-menu.sourceforge.net/"><font color="#049baa">http://struts-menu.sourceforge.net</font></a><br />
数据库驱动的动态菜单：<a href="http://demo.raibledesigns.com/struts-menu/dynamicMenu.jsp"><font color="#049baa">http://demo.raibledesigns.com/struts-menu/dynamicMenu.jsp</font></a></p>
<img src ="http://www.blogjava.net/gdufo/aggbug/220180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-08-05 15:07 <a href="http://www.blogjava.net/gdufo/archive/2008/08/05/220180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实战Struts-Menu（4)</title><link>http://www.blogjava.net/gdufo/archive/2008/08/05/220178.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 05 Aug 2008 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/08/05/220178.html</guid><description><![CDATA[<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,128,0)">/**</span><span style="color: rgb(0,128,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;从数据库中读取菜单配置信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128,128,128)">@return</span><span style="color: rgb(0,128,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">*/</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">private</span><span style="color: rgb(0,0,0)">&nbsp;Map[]&nbsp;getMenuComponents()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&nbsp;list&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)">new</span><span style="color: rgb(0,0,0)">&nbsp;ArrayList();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&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)">null</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PreparedStatement&nbsp;pstmt&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)">null</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet&nbsp;rest&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)">null</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql&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,0)">"</span><span style="color: rgb(0,0,0)">select&nbsp;name,parent_name,title,location,description&nbsp;from&nbsp;menu_item&nbsp;order&nbsp;by&nbsp;id</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">try</span><span style="color: rgb(0,0,0)">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">com.mysql.jdbc.Driver</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">).newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;DriverManager.getConnection(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">jdbc:mysql://localhost/myexamples?user=root&amp;password=mywangya&amp;useUnicode=true&amp;characterEncoding=UTF-8</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstmt&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;conn.prepareStatement(sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rest&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;pstmt.executeQuery();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">while</span><span style="color: rgb(0,0,0)">&nbsp;(rest.next())&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">int</span><span style="color: rgb(0,0,0)">&nbsp;i&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,0)">1</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HashMap&nbsp;map&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)">new</span><span style="color: rgb(0,0,0)">&nbsp;HashMap();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">name</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">,&nbsp;rest.getString(i</span><span style="color: rgb(0,0,0)">++</span><span style="color: rgb(0,0,0)">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">parent_name</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">,&nbsp;rest.getString(i</span><span style="color: rgb(0,0,0)">++</span><span style="color: rgb(0,0,0)">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">title</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">,&nbsp;rest.getString(i</span><span style="color: rgb(0,0,0)">++</span><span style="color: rgb(0,0,0)">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">location</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">,&nbsp;rest.getString(i</span><span style="color: rgb(0,0,0)">++</span><span style="color: rgb(0,0,0)">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">description</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">,&nbsp;rest.getString(i</span><span style="color: rgb(0,0,0)">++</span><span style="color: rgb(0,0,0)">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(map);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(SQLException&nbsp;ex)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(InstantiationException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(IllegalAccessException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(ClassNotFoundException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">finally</span><span style="color: rgb(0,0,0)">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">try</span><span style="color: rgb(0,0,0)">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">!=</span><span style="color: rgb(0,0,0)">rest)&nbsp;rest.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">!=</span><span style="color: rgb(0,0,0)">pstmt)&nbsp;pstmt.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">!=</span><span style="color: rgb(0,0,0)">conn)&nbsp;conn.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(SQLException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">return</span><span style="color: rgb(0,0,0)">&nbsp;(Map[])&nbsp;list.toArray(</span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)">&nbsp;HashMap[</span><span style="color: rgb(0,0,0)">0</span><span style="color: rgb(0,0,0)">]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">/**</span><span style="color: rgb(0,128,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;构造菜单权限<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128,128,128)">@param</span><span style="color: rgb(0,128,0)">&nbsp;request<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">*/</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">private</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)">&nbsp;buildMenuPermissions(HttpServletRequest&nbsp;request)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PermissionsAdapter&nbsp;permession&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)">new</span><span style="color: rgb(0,0,0)">&nbsp;PermissionsAdapter()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">boolean</span><span style="color: rgb(0,0,0)">&nbsp;isAllowed(MenuComponent&nbsp;menu)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">&nbsp;名称等于StandaloneMenu的菜单不显示</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">return</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)">"</span><span style="color: rgb(0,0,0)">StandaloneMenu</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">.equalsIgnoreCase(menu.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">examplesPermession</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">,&nbsp;permession);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">/**</span><span style="color: rgb(0,128,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;构造菜单显示标题<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128,128,128)">@param</span><span style="color: rgb(0,128,0)">&nbsp;request<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">*/</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">private</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)">&nbsp;buildMenuResourceBundle(HttpServletRequest&nbsp;request)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuResourceBundle&nbsp;resourceBundle&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)">new</span><span style="color: rgb(0,0,0)">&nbsp;MenuResourceBundle();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">examplesBundle</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">,&nbsp;resourceBundle);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">/**</span><span style="color: rgb(0,128,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;MenuResourceBundle树状菜单国际语言显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128,128,128)">@author</span><span style="color: rgb(0,128,0)">&nbsp;wenbin.zhang<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">*/</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">class</span><span style="color: rgb(0,0,0)">&nbsp;MenuResourceBundle&nbsp;</span><span style="color: rgb(0,0,255)">extends</span><span style="color: rgb(0,0,0)">&nbsp;ListResourceBundle&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">private</span><span style="color: rgb(0,0,0)">&nbsp;ArrayList&nbsp;list&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)">new</span><span style="color: rgb(0,0,0)">&nbsp;ArrayList();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;MenuResourceBundle()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&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)">null</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PreparedStatement&nbsp;pstmt&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)">null</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet&nbsp;rest&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)">null</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql&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,0)">"</span><span style="color: rgb(0,0,0)">select&nbsp;title,titleCN&nbsp;from&nbsp;menu_item&nbsp;order&nbsp;by&nbsp;id</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">try</span><span style="color: rgb(0,0,0)">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">com.mysql.jdbc.Driver</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">).newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;DriverManager.getConnection(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">jdbc:mysql://localhost/myexamples?user=root&amp;password=mywangya&amp;useUnicode=true&amp;characterEncoding=UTF-8</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstmt&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;conn.prepareStatement(sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rest&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;pstmt.executeQuery();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">while</span><span style="color: rgb(0,0,0)">&nbsp;(rest.next())&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">int</span><span style="color: rgb(0,0,0)">&nbsp;i&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,0)">1</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;message&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)">new</span><span style="color: rgb(0,0,0)">&nbsp;String[</span><span style="color: rgb(0,0,0)">2</span><span style="color: rgb(0,0,0)">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message[</span><span style="color: rgb(0,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)">&nbsp;rest.getString(i</span><span style="color: rgb(0,0,0)">++</span><span style="color: rgb(0,0,0)">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">try</span><span style="color: rgb(0,0,0)">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message[</span><span style="color: rgb(0,0,0)">1</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)">&nbsp;</span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)">&nbsp;String(rest.getString(i</span><span style="color: rgb(0,0,0)">++</span><span style="color: rgb(0,0,0)">).getBytes(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">latin1</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)">gbk</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);<br />
&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: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(UnsupportedEncodingException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(message[</span><span style="color: rgb(0,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)">&nbsp;</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,0)">&amp;&amp;</span><span style="color: rgb(0,0,0)">&nbsp;message[</span><span style="color: rgb(0,0,0)">1</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)">&nbsp;</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(message);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(SQLException&nbsp;ex)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(InstantiationException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(IllegalAccessException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(ClassNotFoundException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">finally</span><span style="color: rgb(0,0,0)">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">try</span><span style="color: rgb(0,0,0)">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">!=</span><span style="color: rgb(0,0,0)">rest)&nbsp;rest.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">!=</span><span style="color: rgb(0,0,0)">pstmt)&nbsp;pstmt.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">!=</span><span style="color: rgb(0,0,0)">conn)&nbsp;conn.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: rgb(0,0,255)">catch</span><span style="color: rgb(0,0,0)">&nbsp;(SQLException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;Object[][]&nbsp;getContents()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">return</span><span style="color: rgb(0,0,0)">&nbsp;(String[][])&nbsp;list.toArray(</span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)">&nbsp;String[</span><span style="color: rgb(0,0,0)">0</span><span style="color: rgb(0,0,0)">][</span><span style="color: rgb(0,0,0)">0</span><span style="color: rgb(0,0,0)">]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span></div>
&gt; 将struts-config.xml文件的&lt;action-mappings /&gt;部分修改为：<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">action-mappings</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">action&nbsp;</span><span style="color: rgb(255,0,0)">path</span><span style="color: rgb(0,0,255)">="/menuAction"</span><span style="color: rgb(255,0,0)">&nbsp;type</span><span style="color: rgb(0,0,255)">="cn.appex.menu.MenuAction"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">forward&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="success"</span><span style="color: rgb(255,0,0)">&nbsp;path</span><span style="color: rgb(0,0,255)">="/struts-menu/dynamic-menu.jsp"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">action</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">action-mappings</span><span style="color: rgb(0,0,255)">&gt;</span></div>
<img src ="http://www.blogjava.net/gdufo/aggbug/220178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-08-05 15:05 <a href="http://www.blogjava.net/gdufo/archive/2008/08/05/220178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实战Struts-Menu(3)</title><link>http://www.blogjava.net/gdufo/archive/2008/08/05/220175.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 05 Aug 2008 07:02:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/08/05/220175.html</guid><description><![CDATA[&nbsp;插入测试数据：<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: rgb(0,0,0)">INSERT&nbsp;INTO&nbsp;menu_item<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;(id</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">&nbsp;parent_name</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">&nbsp;name</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">&nbsp;title</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">&nbsp;titleCN</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">&nbsp;location)<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />VALUES<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: rgb(0,0,0)">1</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">null</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'DatabaseMenu'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'Database&nbsp;Menu'</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)">null)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: rgb(0,0,0)">2</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'DatabaseMenu'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'Yahoo'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'Yahoo&nbsp;Mail'</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)">'http://mail.yahoo.com')</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: rgb(0,0,0)">3</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'DatabaseMenu'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'JavaBlogs'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'JavaBlogs'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'Java博客'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'http://javablogs.com')</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: rgb(0,0,0)">4</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">null</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'StandaloneMenu'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">'Standalone&nbsp;Menu'</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)">'http://www.sohu.com')<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
&gt; 将数据库驱动程序放到lib目录中，并加入到Build Path，如MySQL的数据库驱动mysql-connector-java-3.1.8-bin.jar，解压缩commons- collections-3.1.zip，将commons-collections-3.1.jar释放到lib目录，并加入Build Path<br />
&nbsp; &gt; 新建一个Struts的Action，代码如下：<br />
<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,0,255)">package</span><span style="color: rgb(0,0,0)">&nbsp;cn.appex.menu;<br />
<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.io.UnsupportedEncodingException;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.sql.Connection;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.sql.DriverManager;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.sql.PreparedStatement;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.sql.ResultSet;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.sql.SQLException;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.util.ArrayList;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.util.HashMap;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.util.ListResourceBundle;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.util.Map;<br />
<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;com.mysql.jdbc.Driver;<br />
<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;javax.servlet.http.HttpServletRequest;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;javax.servlet.http.HttpServletResponse;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;javax.servlet.http.HttpSession;<br />
<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;net.sf.navigator.menu.MenuComponent;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;net.sf.navigator.menu.MenuRepository;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;net.sf.navigator.menu.PermissionsAdapter;<br />
<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;org.apache.struts.action.Action;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;org.apache.struts.action.ActionForm;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;org.apache.struts.action.ActionForward;<br />
</span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;org.apache.struts.action.ActionMapping;<br />
<br />
</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">class</span><span style="color: rgb(0,0,0)">&nbsp;MenuAction&nbsp;</span><span style="color: rgb(0,0,255)">extends</span><span style="color: rgb(0,0,0)">&nbsp;Action&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;ActionForward&nbsp;execute(ActionMapping&nbsp;mapping,&nbsp;ActionForm&nbsp;form,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">throws</span><span style="color: rgb(0,0,0)">&nbsp;Exception&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buildMenuRepository(request);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buildMenuResourceBundle(request);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buildMenuPermissions(request);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">return</span><span style="color: rgb(0,0,0)">&nbsp;(mapping.findForward(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">success</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">/**</span><span style="color: rgb(0,128,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;创建菜单数据结构<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128,128,128)">@param</span><span style="color: rgb(0,128,0)">&nbsp;request<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">*/</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">private</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)">&nbsp;buildMenuRepository(HttpServletRequest&nbsp;request)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuRepository&nbsp;repository&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)">new</span><span style="color: rgb(0,0,0)">&nbsp;MenuRepository();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">&nbsp;Get&nbsp;the&nbsp;repository&nbsp;from&nbsp;the&nbsp;application&nbsp;scope&nbsp;-&nbsp;and&nbsp;copy&nbsp;the<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">&nbsp;DisplayerMappings&nbsp;from&nbsp;it.</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuRepository&nbsp;defaultRepository&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;(MenuRepository)&nbsp;request<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getSession().getServletContext().getAttribute(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuRepository.MENU_REPOSITORY_KEY);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repository.setDisplayers(defaultRepository.getDisplayers());<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map[]&nbsp;menus&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;getMenuComponents();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">for</span><span style="color: rgb(0,0,0)">&nbsp;(</span><span style="color: rgb(0,0,255)">int</span><span style="color: rgb(0,0,0)">&nbsp;i</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">0</span><span style="color: rgb(0,0,0)">;&nbsp;i&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">&nbsp;menus.length;&nbsp;i</span><span style="color: rgb(0,0,0)">++</span><span style="color: rgb(0,0,0)">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuComponent&nbsp;mc&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)">new</span><span style="color: rgb(0,0,0)">&nbsp;MenuComponent();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;row&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;menus[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;(String)&nbsp;row.get(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">name</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mc.setName(name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;parent&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;(String)&nbsp;row.get(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">parent_name</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name&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,0)">"</span><span style="color: rgb(0,0,0)">,&nbsp;parent&nbsp;is:&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,0)">+</span><span style="color: rgb(0,0,0)">&nbsp;parent);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(parent&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)">null</span><span style="color: rgb(0,0,0)">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuComponent&nbsp;parentMenu&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;repository.getMenu(parent);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;(parentMenu&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)">null</span><span style="color: rgb(0,0,0)">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">parentMenu&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,0)">+</span><span style="color: rgb(0,0,0)">&nbsp;parent&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,0)">"</span><span style="color: rgb(0,0,0)">'&nbsp;doesn't&nbsp;exist!</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">&nbsp;create&nbsp;a&nbsp;temporary&nbsp;parentMenu</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parentMenu&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)">new</span><span style="color: rgb(0,0,0)">&nbsp;MenuComponent();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parentMenu.setName(parent);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repository.addMenu(parentMenu);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mc.setParent(parentMenu);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;title&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;(String)&nbsp;row.get(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">title</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mc.setTitle(title);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;location&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;(String)&nbsp;row.get(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">location</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mc.setLocation(location);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;description&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;(String)&nbsp;row.get(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">description</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mc.setDescription(description);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repository.addMenu(mc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">examplesRepository</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">,&nbsp;repository);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span></div>
<img src ="http://www.blogjava.net/gdufo/aggbug/220175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-08-05 15:02 <a href="http://www.blogjava.net/gdufo/archive/2008/08/05/220175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实战Struts-Menu(2)</title><link>http://www.blogjava.net/gdufo/archive/2008/08/05/220170.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 05 Aug 2008 06:56:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/08/05/220170.html</guid><description><![CDATA[4：解压缩struts-menu-2.3.zip，将压缩包中的jstl-1.0.6.jar、standard-1.0.6.jar、struts- menu-2.3.jar释放到lib目录中，将压缩包中的struts-menu.tld、struts-menu-el.tld释放到web\WEB -INF目录中，解压缩commons-lang-2.1.zip，将commons-lang-2.1.jar解压缩到lib目录中，注意，在 Struts-Menu的文档中没有看到需要这个包，但是没有这个包却无法成功加载。在web\WEB-INF目录中新建menu- config.xml，内容如下：<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,0,255)">&lt;?</span><span style="color: rgb(255,0,255)">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;</span><span style="color: rgb(0,0,255)">?&gt;</span><span style="color: rgb(0,0,0)"><br />
<br />
</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">MenuConfig</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<br />
&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Displayers</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Displayer&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="DropDown"</span><span style="color: rgb(255,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: rgb(0,0,255)">="net.sf.navigator.displayer.DropDownMenuDisplayer"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Displayer&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="Simple"</span><span style="color: rgb(255,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: rgb(0,0,255)">="net.sf.navigator.displayer.SimpleMenuDisplayer"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Displayer&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="CoolMenu"</span><span style="color: rgb(255,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: rgb(0,0,255)">="net.sf.navigator.displayer.CoolMenuDisplayer"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Displayer&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="CoolMenu4"</span><span style="color: rgb(255,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: rgb(0,0,255)">="net.sf.navigator.displayer.CoolMenuDisplayer4"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Displayer&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="MenuForm"</span><span style="color: rgb(255,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: rgb(0,0,255)">="net.sf.navigator.example.PermissionsFormMenuDisplayer"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Displayer&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="ListMenu"</span><span style="color: rgb(255,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: rgb(0,0,255)">="net.sf.navigator.displayer.ListMenuDisplayer"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Displayer&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="TabbedMenu"</span><span style="color: rgb(255,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: rgb(0,0,255)">="net.sf.navigator.displayer.TabbedMenuDisplayer"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Displayer&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="Velocity"</span><span style="color: rgb(255,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: rgb(0,0,255)">="net.sf.navigator.displayer.VelocityMenuDisplayer"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">Displayers</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<br />
&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Menus</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Menu&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="DoorSite"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="DoorSite"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;description</span><span style="color: rgb(0,0,255)">="Some&nbsp;famous&nbsp;doorsite"</span><span style="color: rgb(255,0,0)">&nbsp;width</span><span style="color: rgb(0,0,255)">="50"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Item&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="Yahoo"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="Yahoo"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Item&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="YahooIndex"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="Yahoo&nbsp;Index"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;location</span><span style="color: rgb(0,0,255)">="http://www.yahoo.com.cn"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Item&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="YahooMail"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="Yahoo&nbsp;Mail"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;location</span><span style="color: rgb(0,0,255)">="http://cn.mail.yahoo.com"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">Item</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Item&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="Sohu"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="Sohu"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;location</span><span style="color: rgb(0,0,255)">="http://www.sohu.com"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Item&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="Sina"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="Sina"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;location</span><span style="color: rgb(0,0,255)">="http://www.sina.com.cn"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">Menu</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">Menus</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<br />
</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">MenuConfig</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<br />
</span></div>
5：将第四步的示例程序中的struts-menu应用目录下的images、scripts、styles三个目录中的内容复制到web目录下
<p>&nbsp; 6：你的目录结构应该类似如下：<br />
<br />
</p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,0,0)">%PROJECT_HOME%\classes<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\antlr.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\commons-beanutils.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\commons-digester.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\commons-fileupload.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\commons-lang-</span><span style="color: rgb(0,0,0)">2.1</span><span style="color: rgb(0,0,0)">.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\commons-logging.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\commons-validator.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\jakarta-oro.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\jstl-</span><span style="color: rgb(0,0,0)">1.0.6</span><span style="color: rgb(0,0,0)">.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\standard-</span><span style="color: rgb(0,0,0)">1.0.6</span><span style="color: rgb(0,0,0)">.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\struts.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\lib\struts-menu-</span><span style="color: rgb(0,0,0)">2.3</span><span style="color: rgb(0,0,0)">.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\src<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\src\log4j.properties<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\src\application.properties<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\src\application_zh_CN.properties<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web<br />
&nbsp;%PROJECT_HOME%\web\images\<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
&nbsp;%PROJECT_HOME%\web\scripts\<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
&nbsp;%PROJECT_HOME%\web\styles\<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF\menu-config.xml<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF\struts-bean.tld<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF\struts-config.xml<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF\struts-html.tld<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF\struts-logic.tld<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF\struts-menu.tld<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF\struts-menu-el.tld<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF\struts-nested.tld<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF\struts-tiles.tld<br />
&nbsp;&nbsp;&nbsp;&nbsp;%PROJECT_HOME%\web\WEB-INF\web.xml</span></div>
<p>六、实战Struts-Menu<br />
&nbsp; 1：使用配置文件实现静态菜单<br />
&nbsp; 新建JSP文件web/static-menu.jsp，内容如下：<br />
</p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,0,0); background-color: rgb(255,255,0)">&lt;%</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">@&nbsp;page&nbsp;contentType</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">=</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">text/html;&nbsp;charset=GBK</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;</span><span style="color: rgb(0,0,0); background-color: rgb(255,255,0)">%&gt;</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,0,0); background-color: rgb(255,255,0)">&lt;%</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">@&nbsp;taglib&nbsp;uri</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">=</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">struts-menu</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;prefix</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">=</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">menu</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">"</span><span style="color: rgb(0,0,0); background-color: rgb(245,245,245)">&nbsp;</span><span style="color: rgb(0,0,0); background-color: rgb(255,255,0)">%&gt;</span><span style="color: rgb(0,0,0)"><br />
<br />
</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:useMenuDisplayer&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="ListMenu"</span><span style="color: rgb(255,0,0)">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;bundle</span><span style="color: rgb(0,0,255)">="org.apache.struts.action.MESSAGE"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">menu:displayMenu&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="DoorSite"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">menu:useMenuDisplayer</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<br />
</span></div>
运行Tomcat，在IE地址栏输入<a href="http://localhost:8080/mymenu/static-menu.jsp"><font color="#049baa">http://localhost:8080/mymenu/static-menu.jsp</font></a>查看<br />
<br />
2：实现中文化<br />
&nbsp; &gt; 在src\application_zh_CN.properties中增加下面的内容，Unicode可以通过JDK自带的native2ascii工具得到：<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,0,0)">#门户网站<br />
menu.DoorSite</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">\u95e8\u6237\u7f51\u7ad9<br />
#雅虎<br />
menu.Yahoo</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">\u96c5\u864e<br />
#雅虎首页<br />
menu.YahooIndex</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">\u96c5\u864e\u9996\u9875<br />
#雅虎邮件<br />
menu.YahooMail</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">\u96c5\u864e\u90ae\u4ef6<br />
#搜狐<br />
menu.Sohu</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">\u641c\u72d0<br />
#新浪<br />
menu.Sina</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">\u65b0\u6d6a<br />
</span></div>
&gt; 在src\application.properties中增加下面的内容：<br />
<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,0,0)">#门户网站<br />
menu.DoorSite</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">DoorSite<br />
#雅虎<br />
menu.Yahoo</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">Yahoo<br />
#雅虎首页<br />
menu.YahooIndex</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">Yahoo&nbsp;Index<br />
#雅虎邮件<br />
menu.YahooMail</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">Yahoo&nbsp;Mail<br />
#搜狐<br />
menu.Sohu</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">Sohu<br />
#新浪<br />
menu.Sina</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">Sina</span></div>
&gt; 修改menu-config.xml文件&lt;Menus&gt;&lt;/Menus&gt;部分：<br />
<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Menus</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Menu&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="DoorSite"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="menu.DoorSite"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;description</span><span style="color: rgb(0,0,255)">="Some&nbsp;famous&nbsp;doorsite"</span><span style="color: rgb(255,0,0)">&nbsp;width</span><span style="color: rgb(0,0,255)">="50"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Item&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="Yahoo"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="menu.Yahoo"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Item&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="YahooIndex"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="menu.YahooIndex"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;location</span><span style="color: rgb(0,0,255)">="http://www.yahoo.com.cn"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Item&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="YahooMail"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="menu.YahooMail"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;location</span><span style="color: rgb(0,0,255)">="http://cn.mail.yahoo.com"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">Item</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Item&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="Sohu"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="menu.Sohu"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;location</span><span style="color: rgb(0,0,255)">="http://www.sohu.com"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">Item&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="Sina"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;title</span><span style="color: rgb(0,0,255)">="menu.Sina"</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;&nbsp;location</span><span style="color: rgb(0,0,255)">="http://www.sina.com.cn"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">Menu</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">Menus</span><span style="color: rgb(0,0,255)">&gt;</span></div>
重起Tomcat，在IE地址栏输入<a href="http://localhost:8080/mymenu/static-menu.jsp"><font color="#049baa">http://localhost:8080/mymenu/static-menu.jsp</font></a>查看
<p>&nbsp; 3：结合数据库实现动态菜单<br />
&nbsp; &gt; 新建数据myexamples：<br />
CREATE DATABASE myexamples<br />
&nbsp; &gt; 新建数据库表menu_item：<br />
<br />
</p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: rgb(0,0,0)">CREATE&nbsp;TABLE&nbsp;menu_item&nbsp;(<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;id&nbsp;BIGINT&nbsp;not&nbsp;null</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;parent_name&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">30</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;name&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">30</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;title&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">30</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;titleCN&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">30</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;description&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">50</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;location&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">255</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;target&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">10</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;onclick&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">100</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;onmouseover&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">100</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;onmouseout&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">100</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;image&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">50</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;altImage&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">30</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;tooltip&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">100</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;roles&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">100</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;page&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">255</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;width&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">5</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;height&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">5</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;forward&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">50</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;action&nbsp;VARCHAR(</span><span style="color: rgb(0,0,0)">50</span><span style="color: rgb(0,0,0)">)</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;primary&nbsp;key&nbsp;(id)<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />)</span></div>
<img src ="http://www.blogjava.net/gdufo/aggbug/220170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-08-05 14:56 <a href="http://www.blogjava.net/gdufo/archive/2008/08/05/220170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实战Struts-Menu(1)</title><link>http://www.blogjava.net/gdufo/archive/2008/08/05/220167.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 05 Aug 2008 06:52:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/08/05/220167.html</guid><description><![CDATA[<div class="date">2006-11-21 19:13</div>
<table style="table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div class="cnt" id="blog_text">&nbsp;一、简介<br />
            &nbsp; Struts-Menu是一组从基于XML的配置文件中生成多种样式的菜单的JSP Tags，并且可以结合API开发通过数据库生成的动态菜单。Struts-Menu支持国际化和多种权限控制。
            <p>二、运行环境<br />
            &nbsp; Windows 2000 Professional<br />
            &nbsp; JDK 1.4.2_03<br />
            &nbsp; Eclipse 3.1<br />
            &nbsp; Tomcat 5.0.28<br />
            &nbsp; Tomcat Plugin 3.1Beta<br />
            &nbsp; Struts 1.2.7<br />
            &nbsp; Commons-Lang 2.1<br />
            &nbsp; Commons-Collections 3.1<br />
            &nbsp; Struts-Menu 2.3<br />
            &nbsp; MySQL 4.1.10a-nt</p>
            <p>三、下载与安装<br />
            &nbsp; 1：从<a href="http://java.sun.com/"><font color="#049baa">http://java.sun.com</font></a>下载J2SDK，当前1.4.x系列的最新版本为1.4.2_08<br />
            &nbsp; 2：从<a href="http://www.eclipse.org/"><font color="#049baa">http://www.eclipse.org</font></a>下载Eclipse，当前最新版本为3.1正式版<br />
            &nbsp; 3：从<a href="http://jakarta.apache.org/tomcat"><font color="#049baa">http://jakarta.apache.org/tomcat</font></a>下载Tomcat，当前5.x系列的最新版本为5.0.28<br />
            &nbsp; 4：从<a href="http://www.sysdeo.com/eclipse/tomcatplugin"><font color="#049baa">http://www.sysdeo.com/eclipse/tomcatplugin</font></a>下载Eclipse的Tomcat插件，对应Eclipse3.1x的最新版本为3.1Beta<br />
            &nbsp; 5：从<a href="http://struts.apache.org/"><font color="#049baa">http://struts.apache.org</font></a>下载Struts，当前最新版本为1.2.7<br />
            &nbsp; 6：从<a href="http://jakarta.apache.org/commons/"><font color="#049baa">http://jakarta.apache.org/commons/</font></a>下载Commons-Lang，当前最新版本为2.1，下载Commons-Collections，当前最新版本为3.1<br />
            &nbsp; 7：从<a href="http://struts-menu.sourceforge.net/"><font color="#049baa">http://struts-menu.sourceforge.net</font></a>下载Struts Menu，当前最新版本为2.3<br />
            &nbsp; 8：从<a href="http://www.mysql.com/"><font color="#049baa">http://www.mysql.com</font></a>下载MySQL数据库，4.x系列的最新版本是4.1.12a<br />
            &nbsp; 9：MySQL、JDK、Eclipse、Tomcat和TomcatPlugin的安装及配置请参考相关资料</p>
            <p>四、运行示例程序<br />
            &nbsp; 1：安装好Tomcat后，解压缩struts-menu-2.3.zip，将struts-menu.war释放到Tomcat安装目录下的webapps下，运行Tomcat<br />
            &nbsp; 2：在地址栏输入<a href="http://localhost:8080/struts-menu"><font color="#049baa">http://localhost:8080/struts-menu</font></a></p>
            <p>五、安装与配置<br />
            &nbsp; 1：在Eclipse中新建Tomcat项目，Context为/mymenu，Subdirectory为/web<br />
            &nbsp; 2：在项目目录下面新建lib目录和web目录及WEB-INF，在web/WEB-INF目录下新建web.xml，内容如下：<br />
            <br />
            <br />
            </p>
            <div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,0,255)">&lt;?</span><span style="color: rgb(255,0,255)">xml&nbsp;version="1.0"&nbsp;encoding="ISO-8859-1"</span><span style="color: rgb(0,0,255)">?&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            </span><span style="color: rgb(0,0,255)">&lt;!</span><span style="color: rgb(255,0,255)">DOCTYPE&nbsp;web-app<br />
            &nbsp;&nbsp;&nbsp;&nbsp;PUBLIC&nbsp;"-//Sun&nbsp;Microsystems,&nbsp;Inc.//DTD&nbsp;Web&nbsp;Application&nbsp;2.3//EN"<br />
            &nbsp;&nbsp;&nbsp;&nbsp;"http://java.sun.com/dtd/web-app_2_3.dtd"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            </span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">web-app</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">display-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">My&nbsp;Example&nbsp;Application&nbsp;--&nbsp;Vinton&nbsp;Lee</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">display-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;=============&nbsp;The&nbsp;Struts&nbsp;ActionServlet&nbsp;Configuration&nbsp;=============&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">servlet</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">servlet-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">action</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">servlet-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">servlet-class</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">org.apache.struts.action.ActionServlet</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">servlet-class</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">init-param</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">param-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">config</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">param-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">param-value</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">/WEB-INF/struts-config.xml</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">param-value</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">init-param</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">load-on-startup</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">1</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">load-on-startup</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">servlet</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==================================================================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;<br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;=============&nbsp;The&nbsp;Struts&nbsp;Action&nbsp;Servlet&nbsp;Mapping&nbsp;==================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">servlet-mapping</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">servlet-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">action</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">servlet-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">url-pattern</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">*.do</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">url-pattern</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">servlet-mapping</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==================================================================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;<br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;The&nbsp;Welcome&nbsp;File&nbsp;List&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">welcome-file-list</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">welcome-file</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">index.jsp</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">welcome-file</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">welcome-file-list</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;===============&nbsp;The&nbsp;Struts&nbsp;Taglib&nbsp;Definition&nbsp;=====================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">struts-bean</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">/WEB-INF/struts-bean.tld</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">struts-html</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">/WEB-INF/struts-html.tld</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">struts-logic</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">/WEB-INF/struts-logic.tld</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">struts-nested</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">/WEB-INF/struts-nested.tld</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">struts-tiles</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">/WEB-INF/struts-tiles.tld</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==================================================================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;<br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;=============&nbsp;The&nbsp;Struts-Menu&nbsp;Taglib&nbsp;Definition&nbsp;==================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">struts-menu</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-uri</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">/WEB-INF/struts-menu.tld</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib-location</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">taglib</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==================================================================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            </span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">web-app</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            </span></div>
            3：解压缩struts-1.2.7.zip，将压缩包中的lib目录下所有的8个jar释放到lib目录中，将5个tld文件释放到web\WEB-INF目录中，在web\WEB-INF目录中新建struts-config.xml，内容如下：<br />
            <br />
            <div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px"><span style="color: rgb(0,0,255)">&lt;?</span><span style="color: rgb(255,0,255)">xml&nbsp;version="1.0"&nbsp;encoding="ISO-8859-1"&nbsp;</span><span style="color: rgb(0,0,255)">?&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            </span><span style="color: rgb(0,0,255)">&lt;!</span><span style="color: rgb(255,0,255)">DOCTYPE&nbsp;struts-config&nbsp;PUBLIC<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;1.2//EN"<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://struts.apache.org/dtds/struts-config_1_2.dtd"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            </span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">struts-config</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==========&nbsp;Data&nbsp;Source&nbsp;Configuration&nbsp;===============================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">data-sources&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==========&nbsp;Form&nbsp;Bean&nbsp;Definitions&nbsp;===================================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">form-beans&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==========&nbsp;Global&nbsp;Exception&nbsp;Definitions&nbsp;============================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">global-exceptions&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==========&nbsp;Global&nbsp;Forward&nbsp;Definitions&nbsp;==============================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">global-forwards&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==========&nbsp;Action&nbsp;Mapping&nbsp;Definitions&nbsp;==============================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">action-mappings&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==========&nbsp;Controller&nbsp;Configuration&nbsp;================================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==========&nbsp;Message&nbsp;Resources&nbsp;Definitions&nbsp;===========================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">message-resources&nbsp;</span><span style="color: rgb(255,0,0)">parameter</span><span style="color: rgb(0,0,255)">="application"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;==========&nbsp;Plug&nbsp;Ins&nbsp;Configuration&nbsp;==================================&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">plug-in&nbsp;</span><span style="color: rgb(255,0,0)">className</span><span style="color: rgb(0,0,255)">="net.sf.navigator.menu.MenuPlugIn"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">set-property&nbsp;</span><span style="color: rgb(255,0,0)">property</span><span style="color: rgb(0,0,255)">="menuConfig"</span><span style="color: rgb(255,0,0)">&nbsp;value</span><span style="color: rgb(0,0,255)">="/WEB-INF/menu-config.xml"</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
            &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">plug-in</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
            <br />
            </span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">struts-config</span><span style="color: rgb(0,0,255)">&gt;</span></div>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/gdufo/aggbug/220167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-08-05 14:52 <a href="http://www.blogjava.net/gdufo/archive/2008/08/05/220167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2 配置(struts.properties,strtus.xml)</title><link>http://www.blogjava.net/gdufo/archive/2008/08/04/219909.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Mon, 04 Aug 2008 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/08/04/219909.html</guid><description><![CDATA[<p style="font-size: 10pt; font-family: Arial">1.导入STRUTS2-core-2.0.X.jar,xwork-2.0.X.jar,ognl-2.6.x.jar<br />
2.配置web.xml文件<br />
加入org.apache.struts2.dispatcher.FilterDispatcher过滤器的配置<br />
</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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">struts2</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.apache.struts2.dispatcher.FilterDispatcher</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">struts2</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/*</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span></div>
<br />
<p><span style="font-size: 8pt">FilterDispatcher是STRUTS2核心控制器。负责拦截所有的用户请求。</span></p>
<p><span style="font-size: 8pt">用户请求的到达时，Filter过滤用户请求。如果用户请求以action结尾，请求将被转入struts2框架处理。<br />
</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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">可以加入以下参数<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">config</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">以逗号隔开的多个struts配置文件的名,没有XML后缀</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">actionPackages</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />org.apache.struts2.showcase.person包空间名，多个用逗号隔开<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">configProviders</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />一个或多个实现ConfigurationProvider接口的配置提供类的类全名，多个类用逗号隔开<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<p>&nbsp;</p>
<p><span style="font-size: 10pt">3.在classes下加入struts.xml文件</span></p>
<p><span style="font-size: 10pt">Struts.xml文件用来配置action,拦截器等。</span></p>
<p><span style="font-size: 10pt">&nbsp;</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"  alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version=&#8221;1.0&#8221;&nbsp;encoding=&#8221;GBK&#8221;</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">—DTD信息--</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;struts&nbsp;PUBLIC<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&#8220;-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;2.0//EN&#8221;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&#8220;http://struts.apache.org/dtds/struts-2.0.dtd&#8221;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">struts</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">package&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">=&#8221;packagename&#8221;&nbsp;</span><span style="color: #ff0000">extends</span><span style="color: #0000ff">=&#8221;struts-default&#8221;&gt;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff0000">&lt;action&nbsp;name</span><span style="color: #0000ff">=&#8221;Login&#8221;&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">=&#8221;lee.LoginAction&#8221;&gt;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff0000">&lt;result&nbsp;name</span><span style="color: #0000ff">=&#8221;input&#8221;&gt;login.jsp&lt;/result&gt;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff0000">&lt;/action</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">package</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">struts</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p></span><span style="font-size: 10pt">i.Struts-default.xml配置文件位于struts-core-2.0.x.jar包中。是struts2最核心的配置文件。</span></p>
<p><span style="font-size: 10pt">ii.从中可以看到整个的struts的核心功能的全貌.</span></p>
<p><span style="font-size: 10pt">iii.Struts可以在result元素中指定相应的type属性(默认jsp).从而支持其他的视图技术。</span></p>
<p><span style="font-size: 10pt">v.包可以继承其他的包。包可以定义命名空间，用来区别其他配置文件中的相同的包名。</span></p>
<p><span style="font-size: 10pt">vi.包可以定义成abstract=true 这样包就只能被继承，不能被框架直接实例化。</span></p>
<p><span style="font-size: 10pt">vii.struts可以将一个struts.xml文件分解成多个配置文件，然后在struts.xml文件中包含其他配置文件。&lt;struts&gt;&lt;include file=&#8221;struts-partOne.xml&#8221;/&gt;&lt;/struts&gt;</span></p>
<p><span style="font-size: 10pt">注意：也可以在web.xml中配置filter时加入config参数来加载多个配置文件。</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">3．struts.properties配置文件</span></p>
<p><span style="font-size: 10pt">该文件定义了struts2框架的大量属性。只要将该文件放在web应用的CLASSPATH下，struts2框架就会自动加载。</span></p>
<p><span style="font-size: 10pt">stuts.locale </span></p>
<p><span style="font-size: 10pt">指定Web应用的默认Locale</span></p>
<p><span style="font-size: 10pt">struts.i18n.encoding</span></p>
<p><span style="font-size: 10pt">指定应用的默认编码相当于调用HttpServletRequest的setCharacterEncoding方法。</span></p>
<p><span style="font-size: 10pt">struts.custom.i18n.resources</span></p>
<p><span style="font-size: 10pt">指定struts应用所需要的国际化资源文件的名称（message_zh_cn.properties只需要指定名为message）</span></p>
<p><span style="font-size: 10pt">struts.mutipart.parser</span></p>
<p><span style="font-size: 10pt">该属性处理mutipart/form-data的MIME类型请求的框架（cos|pell|jakarta）默认是jakarta(common-fileupload)</span></p>
<p><span style="font-size: 10pt">struts.multipart.saveDir</span></p>
<p><span style="font-size: 10pt">指定上传文件的临时保存路径，默认是javax.servlet.context.tempdir;</span></p>
<p><span style="font-size: 10pt">struts.multipart.maxSize</span></p>
<p><span style="font-size: 10pt">指定文件上传中整个请求内容允许的最大字节数。</span></p>
<p><span style="font-size: 10pt">struts.action.extension</span></p>
<p><span style="font-size: 10pt">指定Struts处理请求后缀，默认是action(login.action)</span></p>
<p><span style="font-size: 10pt">struts.serve.static.browserCache</span></p>
<p><span style="font-size: 10pt">指定浏览器是否缓存静态内容</span></p>
<p><span style="font-size: 10pt">struts.enable.SlashesInActionNames</span></p>
<p><span style="font-size: 10pt">该属性设置struts2是否允许在Action名中使用斜线，该属性的默认值是false。</span></p>
<p><span style="font-size: 10pt">struts.devMode</span></p>
<p><span style="font-size: 10pt">设置struts2是否使用开发模式（true|false）</span></p>
<p><span style="font-size: 10pt">struts.dispatcher.parametersWorkaround</span></p>
<p><span style="font-size: 10pt">对于不支持HttpServlertRequest调用getParameterMap()方法的服务器，可以设置该属性值为true</span></p>
<p><span style="font-size: 10pt">来解决该问题。不支持getParameterMap()方法的服务器：weblogic,orion,oc4j</span></p>
<p><span style="font-size: 10pt">&nbsp;</span><span style="font-size: 10pt">struts.i18n.reload</span></p>
<p><span style="font-size: 10pt">设置是否每次HTTP请求到达时，系统都重新加载资源文件。默认false</span></p>
<p><span style="font-size: 10pt">struts.ui.theme</span></p>
<p><span style="font-size: 10pt">设置视图标签的默认主题。默认是xhtml</span></p>
<p><span style="font-size: 10pt">struts.ui.templateDir</span></p>
<p><span style="font-size: 10pt">设置视图主题所需模板文件的位置，默认是template,默认加载template路径下的模板文件。</span></p>
<p><span style="font-size: 10pt">struts.ui.templateSuffix</span></p>
<p><span style="font-size: 10pt">指定模板文件的后缀（ftl|vm|jsp）</span></p>
<p><span style="font-size: 10pt">struts.configuration.xml.reload</span></p>
<p><span style="font-size: 10pt">&nbsp;设置当struts.xml文件改变后，系统是否自动重新加载。</span></p>
<p><span style="font-size: 10pt">struts.configuration.files</span></p>
<p><span style="font-size: 10pt">指定默认加载的配置文件，默认值是：struts-default.xml,struts-plugin.xml,struts.xml</span></p>
<p><span style="font-size: 10pt">struts.objectFactory</span></p>
<p><span style="font-size: 10pt">指定struts2默认的ObjectFactoryBean,该属性默认是spring </span></p>
<p><span style="font-size: 10pt">struts.objectFactory.spring.autoWire </span></p>
<p><span style="font-size: 10pt">&nbsp;指定Spring框架自动装配模式，默认是name.即根据Bean的name属性自动装配。</span></p>
<p><span style="font-size: 10pt">struts.objectFactory.spring.userClassCache</span></p>
<p><span style="font-size: 10pt">&nbsp;指定spring框架是否缓存Bean实例。默认是true</span></p>
<p><span style="font-size: 10pt">struts.objectTypeDeterminer (tiger|notiger)</span></p>
<p><br />
</span>&nbsp;</p>
 <img src ="http://www.blogjava.net/gdufo/aggbug/219909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-08-04 14:03 <a href="http://www.blogjava.net/gdufo/archive/2008/08/04/219909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2 中文计划 翻译</title><link>http://www.blogjava.net/gdufo/archive/2008/07/02/212179.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Wed, 02 Jul 2008 10:06:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/07/02/212179.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gdufo/archive/2008/07/02/212179.html'>阅读全文</a><img src ="http://www.blogjava.net/gdufo/aggbug/212179.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-07-02 18:06 <a href="http://www.blogjava.net/gdufo/archive/2008/07/02/212179.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2与Velocity模板</title><link>http://www.blogjava.net/gdufo/archive/2008/06/29/211517.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sun, 29 Jun 2008 11:34:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2008/06/29/211517.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/211517.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2008/06/29/211517.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/211517.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/211517.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Velocity</font></span><span>是一种基于</span><span><font face="Times New Roman">JAVA</font></span><span>的模板引擎，开发人员使用简单的模板语言就可以快速开发显示层，它使得显示层与程序代码分离，在早期的</span><span><font face="Times New Roman">Webwork</font></span><span>版本中，所有</span><span><font face="Times New Roman">UI</font></span><span>标签均使用</span><span><font face="Times New Roman">Velocity</font></span><span>模板引擎生成，可以在</span><span><font face="Times New Roman">Struts-core-2.0.8.jar</font></span><span>中找到</span><span><font face="Times New Roman">template</font></span><span>文件夹，其中的</span><span><font face="Times New Roman">archive</font></span><span>文件夹下存放着原有的</span><span><font face="Times New Roman">vl</font></span><span>文件！</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span>在</span><span><font face="Times New Roman">Struts2</font></span><span>中查找</span><span><font face="Times New Roman">vm</font></span><span>文件的顺序先查找</span><span><font face="Times New Roman">Web</font></span><span>应用程序，再查找类路径。如果你需要使用</span><span><font face="Times New Roman">vm</font></span><span>作为显示层，只需要在配置文件中指定</span><span><font face="Times New Roman">result</font></span><span>的</span><span><font face="Times New Roman">type</font></span><span>属性为</span><span><font face="Times New Roman">velocity</font></span><span>，然后将</span><span><font face="Times New Roman">&lt;param&gt;</font></span><span>的</span><span><font face="Times New Roman">location</font></span><span>属性指定到一个以</span><span><font face="Times New Roman">vm</font></span><span>结尾的资源上就可以了！</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span><font face="Times New Roman">1.Struts2</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>中的</span><span><font face="Times New Roman">Velocity</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>中文乱码的处理方式：</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span>因为在</span><span><font face="Times New Roman">Velocity-1.4.jar</font></span><span>中的</span><span><font face="Times New Roman">org.apache.velocity.runtime.defaults</font></span><span>中定义的</span><span><font face="Times New Roman">velocity.properties</font></span><span>中定义的</span><span><font face="Times New Roman">input.encoding=ISO8859-1</font></span><span>，</span><span><font face="Times New Roman">output.encoding=ISO8859-1</font></span><span>，通常最好在</span><span><font face="Times New Roman">VM</font></span><span>文件中使用</span><span><font face="Times New Roman">%{getText(&#8216;&#8217;)}</font></span><span>调用国际化资源文件的内容就不会产生乱码。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span><strong style="mso-bidi-font-weight: normal"><span><font face="Times New Roman">2.Velocity</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>的</span><span><font face="Times New Roman">vm</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>文件必须要经过</span><span><font face="Times New Roman">Action</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>才可以访问，以便被程序解析，不可以直接访问</span><span><font face="Times New Roman">vm</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>文件。</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span><strong style="mso-bidi-font-weight: normal"><span><font face="Times New Roman">3.</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>在</span><span><font face="Times New Roman">vm</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>文件中使用</span><span><font face="Times New Roman">Struts2</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>的标签只需要在原有标签前加</span><span><font face="Times New Roman">#s</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>就可以了，参数之间使用</span><span><font face="Times New Roman">&#8221;&#8221;</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>分隔！</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(1.)</font></span><span>例如下面是一个表单的定义：</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">#sform(&#8220;action=Student&#8221; namespace=&#8221;/ilkj/student&#8221;)</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#stextfield(&#8220;label=%{getText(&#8216;student.label.name&#8217;)}&#8221;<span style="mso-spacerun: yes"> </span>&#8220;name=student.name&#8221;)</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#spassword(&#8220;label=%{getText(&#8216;student.label.password&#8217;)}<span style="mso-spacerun: yes"> </span>&#8221; name=student.age&#8221;)</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#ssubmit(&#8220;value=getText(&#8216;globale.label.submit&#8217;)&#8221;)</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">#end</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span><span><font face="Times New Roman">(2.)</font></span><span>下面是取出</span><span><font face="Times New Roman">session</font></span><span>中的一个参数的值</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">#sproperty(&#8220;value=#session.information&#8221; &#8220;default=noValue&#8221;)</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span><span><font face="Times New Roman">(3.)</font></span><span>下面是访问</span><span><font face="Times New Roman">Action</font></span><span>中的属性</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">${student.name}</font></span><span>，当然你也可以简单写成</span><span><font face="Times New Roman">$student.name</font></span><span>的形式。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span><font face="Times New Roman">4.Velocity</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>的内建变量：</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">stack---ValueStack</font></span><span>，可以使用</span><span><font face="Times New Roman">${stack.findString(&#8216;OGNL</font></span><span>表达式</span><span><font face="Times New Roman">&#8217;)}</font></span><span>取值</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">action---</font></span><span>最近执行的</span><span><font face="Times New Roman">Action</font></span><span>，例如</span><span><font face="Times New Roman">${action.getStudent().getName()}</font></span><span>或者也可以直接写</span><span><font face="Times New Roman">${action.student.name}</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">response---HttpServletRequest</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">request---HttpServletResponse</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">session---HttpSession</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">application---ServletContext</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">base---</font></span><span>生成应用的上下文，相当与</span><span><font face="Times New Roman">request.getContextPath()</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span><font face="Times New Roman">5.</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>注释语法</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(1.)</font></span><span>单行注释：</span><span><font face="Times New Roman">##</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(2.)</font></span><span>多行注释：</span><span><font face="Times New Roman">#* ... ... *#</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span><font face="Times New Roman">6.</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>暂停执行</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">#stop---</font></span><span>停止执行后面的模板内容</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span><font face="Times New Roman">7.</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>转义字符</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Velocity</font></span><span>使用</span><span><font face="Times New Roman"> \ </font></span><span>转义字符，例如</span><span><font face="Times New Roman">email</font></span><span>被定义为</span><span><font face="Times New Roman">andrew830314@163.com</font></span><span>（</span><span><font face="Times New Roman">#set($email=&#8217;andrew830314@163.com&#8217;)</font></span><span>），你还想输出</span><span><font face="Times New Roman">$email</font></span><span>而不被</span><span><font face="Times New Roman">Velocity</font></span><span>解析，那么你可以使用</span><span><font face="Times New Roman"> \$email</font></span><span>。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span><font face="Times New Roman">8.</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>引入其他文件</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">#include(&#8220;&#8221;)</font></span><span>，如果是</span><span><font face="Times New Roman">JSP</font></span><span>或者</span><span><font face="Times New Roman">vm</font></span><span>文件将会显示内容，其他文本文件显示文本，二进制会显示乱码，引入多个文件使用</span><span><font face="Times New Roman"> , </font></span><span>间隔，</span><span><font face="Times New Roman">#parse(&#8220;&#8221;)</font></span><span>引入一个本地的</span><span><font face="Times New Roman">vm</font></span><span>文件，与</span><span><font face="Times New Roman">#include(&#8220;&#8221;)</font></span><span>不同，</span><span><font face="Times New Roman">#parse(&#8220;&#8221;)</font></span><span>只能引入一个文件，并且</span><span><font face="Times New Roman">#parse(&#8220;&#8221;)</font></span><span>可以访问父模板里的变量。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span><font face="Times New Roman">9.</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>模板代码复用</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">#macro(</font></span><span style="color: red">代码段名称</span><span><font face="Times New Roman"> $</font></span><span>参数</span><span><font face="Times New Roman">1 ... ...)</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>... ...</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">#end</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span>只要使用</span><span style="color: red"><font face="Times New Roman">#</font></span><span style="color: red">代码段名称</span><span><font face="Times New Roman">($</font></span><span>参数</span><span><font face="Times New Roman">1 ... ...)</font></span><span>就可以使用这段代码，当然你也可以不使用任何参数</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span><font face="Times New Roman">10.</font></span></strong><strong style="mso-bidi-font-weight: normal"><span>判断语句</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">#if(</font></span><span>逻辑表达式</span><span><font face="Times New Roman">)</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span style="color: red">注意：在</span><span style="color: red"><font face="Times New Roman">Velocity</font></span></strong><strong style="mso-bidi-font-weight: normal"><span style="color: red">中使用</span><span style="color: red"><font face="Times New Roman">==</font></span></strong><strong style="mso-bidi-font-weight: normal"><span style="color: red">判断两个变量是否相等，而不是使用</span><span style="color: red"><font face="Times New Roman">equals(&#8220;&#8221;)</font></span></strong><strong style="mso-bidi-font-weight: normal"><span style="color: red">方法。</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">#else</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">#end</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span>从上面我们还可以总结出，</span><span><font face="Times New Roman">Velocity</font></span><span>模板引擎使用</span><span><font face="Times New Roman">#</font></span><span>表示一种命令，例如</span><span><font face="Times New Roman">#set</font></span><span>是给某个变量设置值，使用</span><span><font face="Times New Roman">$</font></span><span>引用变量，使用</span><span><font face="Times New Roman">()</font></span><span>表示参数，使用</span><span><font face="Times New Roman">{}</font></span><span>表示作用范围。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span>另外需要注意的时候，</span><span><font face="Times New Roman">Velocity</font></span><span>只会按照</span><span><font face="Times New Roman">gettXXX()</font></span><span>解析变脸变量，例如</span><span><font face="Times New Roman">student.name</font></span><span>实际上找到的</span><span><font face="Times New Roman">student.getName()</font></span><span>方法，你可以试着在</span><span><font face="Times New Roman">Action</font></span><span>写一个变量而不使用</span><span><font face="Times New Roman">getXXX()</font></span><span>方法，看看会不会在</span><span><font face="Times New Roman">vm</font></span><span>中取到值，答案是变量会被原样输出。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Velocity</font></span><span>使用的都是对象，即使你定义</span><span><font face="Times New Roman">#set ($count=1)</font></span><span>也会被包装成</span><span><font face="Times New Roman">Integer</font></span><span>使用。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span>另外，修改</span><span><font face="Times New Roman">vm</font></span><span>文件需要重新启动服务器，如果在开发阶段，我们可以设置</span><span><font face="Times New Roman">struts.properties</font></span><span>中的</span><span><font face="Times New Roman">struts.devMode=true</font></span><span>避免每次重新启动服务器。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p>
<span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">最后我们思考一下，如果货币</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-: 1.0pt">$2.95</span><span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">会被</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-: 1.0pt">Velocity</span><span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">引擎直接输出，还是去查找</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-: 1.0pt">2.95</span><span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">这个变量？如果你在思考这个问题，说明你的</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-: 1.0pt">JAVA</span><span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">基础不过关哦！因为</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-: 1.0pt">JAVA</span><span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">中的变量不能以数字开头的哦！因此你不必担心货币</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-: 1.0pt">$2.95</span><span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">会被当作变量解析！另外，如果</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-: 1.0pt">Velocity</span><span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">引擎未找到变量也会原样输出，例如</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-: 1.0pt">${student.name}</span><span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">如果未找到会直接原样输出，这也是为什么我们直接访问</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-: 1.0pt">JSP</span><span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">的时候会看到大量的</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-: 1.0pt">${}</span><span style="font-size: 10.5pt; mso-ascii-: 12.0pt; mso-font-kerning: 1.0pt">被原样输出。如果变量不存在,你想让它不输出,可以这样写$!{}</span>
<img src ="http://www.blogjava.net/gdufo/aggbug/211517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2008-06-29 19:34 <a href="http://www.blogjava.net/gdufo/archive/2008/06/29/211517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>