﻿<?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-老钟</title><link>http://www.blogjava.net/LaozhonG/</link><description>并不是每一次雨后，都会有彩虹</description><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 06:24:07 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 06:24:07 GMT</pubDate><ttl>60</ttl><item><title>回归</title><link>http://www.blogjava.net/LaozhonG/archive/2013/11/20/406580.html</link><dc:creator>LaozhonG</dc:creator><author>LaozhonG</author><pubDate>Wed, 20 Nov 2013 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/LaozhonG/archive/2013/11/20/406580.html</guid><wfw:comment>http://www.blogjava.net/LaozhonG/comments/406580.html</wfw:comment><comments>http://www.blogjava.net/LaozhonG/archive/2013/11/20/406580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/LaozhonG/comments/commentRss/406580.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/LaozhonG/services/trackbacks/406580.html</trackback:ping><description><![CDATA[好久没有写点什么了,今天回归来看看这里,是时候写上点什么了?<br />尽管现在转做php了,感觉架构技术这块要提上来了!不在是做点小程序,写几行代码了!<img src ="http://www.blogjava.net/LaozhonG/aggbug/406580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/LaozhonG/" target="_blank">LaozhonG</a> 2013-11-20 15:37 <a href="http://www.blogjava.net/LaozhonG/archive/2013/11/20/406580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IIS8和Apache共享开发目录</title><link>http://www.blogjava.net/LaozhonG/archive/2013/11/20/406579.html</link><dc:creator>LaozhonG</dc:creator><author>LaozhonG</author><pubDate>Wed, 20 Nov 2013 07:32:00 GMT</pubDate><guid>http://www.blogjava.net/LaozhonG/archive/2013/11/20/406579.html</guid><wfw:comment>http://www.blogjava.net/LaozhonG/comments/406579.html</wfw:comment><comments>http://www.blogjava.net/LaozhonG/archive/2013/11/20/406579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/LaozhonG/comments/commentRss/406579.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/LaozhonG/services/trackbacks/406579.html</trackback:ping><description><![CDATA[<p style="margin:0in;font-size:11.0pt"><span style="font-family:Calibri">2013-11-20</span><span style="font-family:微软雅黑">今天部署了</span><span style="font-family:Calibri">iis8,</span><span style="font-family: 微软雅黑">终于配置成功了</span><span style="font-family:Calibri">;</span></p>  <p style="margin:0in;font-size:11.0pt"><span style="font-family:微软雅黑">注意</span><span style="font-family:Calibri">system32</span><span style="font-family:微软雅黑">目录的</span><span style="font-family:Calibri">php_mysql.dll</span><span style="font-family:微软雅黑">和</span><span style="font-family:Calibri">php_mysqli.dll</span></p>  <p style="margin:0in;font-size:11.0pt"><span style="font-family:Calibri">window</span><span style="font-family:微软雅黑">目录下面需要有</span><span style="font-family:Calibri">php.ini</span></p>  <p style="margin:0in;font-size:11.0pt"><span style="font-family:微软雅黑">以及</span><span style="font-family:Calibri">iis</span><span style="font-family:微软雅黑">的</span><span style="font-family:Calibri">fastcgi</span><span style="font-family:微软雅黑">指向的</span><span style="font-family:Calibri">php-cgi.exe</span><span style="font-family:微软雅黑">所在的目录</span><span style="font-family:Calibri">,</span></p>  <p style="margin:0in;font-size:11.0pt"><span style="font-family:微软雅黑">用</span><span style="font-family:Calibri">phpinfo</span><span style="font-family:微软雅黑">看看系统坏境变量加载的是哪个</span><span style="font-family:Calibri">php.ini</span><span style="font-family: 微软雅黑">文件</span><span style="font-family:Calibri">,</span></p>  <p style="margin:0in;font-family:微软雅黑;font-size:11.0pt">这里面的extension_dir="D:\WORK\php-5.5.5-nts\ext"</p>  <p style="margin:0in;font-size:11.0pt"><span style="font-family:微软雅黑">要配置正确</span><span style="font-family:Calibri">;</span><span style="font-family:微软雅黑">这样才能访问得到</span><span style="font-family: Calibri">;</span></p>  <p style="margin:0in;font-size:11.0pt"><span style="font-family:Calibri">iis8</span><span style="font-family:微软雅黑">的</span><span style="font-family:Calibri">rewrite</span><span style="font-family: 微软雅黑">用自带</span><span style="font-family:Calibri">(</span><span style="font-family:微软雅黑">也可能是安装了后的</span><span style="font-family: Calibri">)</span><span style="font-family:微软雅黑">里面的</span><span style="font-family:Calibri">;<br /><br /></span></p><img src ="http://www.blogjava.net/LaozhonG/aggbug/406579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/LaozhonG/" target="_blank">LaozhonG</a> 2013-11-20 15:32 <a href="http://www.blogjava.net/LaozhonG/archive/2013/11/20/406579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获取IE,FireFox和Chrome的File全路径</title><link>http://www.blogjava.net/LaozhonG/archive/2012/04/14/374174.html</link><dc:creator>LaozhonG</dc:creator><author>LaozhonG</author><pubDate>Sat, 14 Apr 2012 08:06:00 GMT</pubDate><guid>http://www.blogjava.net/LaozhonG/archive/2012/04/14/374174.html</guid><wfw:comment>http://www.blogjava.net/LaozhonG/comments/374174.html</wfw:comment><comments>http://www.blogjava.net/LaozhonG/archive/2012/04/14/374174.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/LaozhonG/comments/commentRss/374174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/LaozhonG/services/trackbacks/374174.html</trackback:ping><description><![CDATA[<p style="padding: 0px 0px 15px; margin: 0px; color: #555555; font-family: 宋体, 'Arial Narrow', arial, serif; line-height: 28px; background-color: #ffffff; "></p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">var</span><span style="color: #000000; ">&nbsp;path;<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">function</span><span style="color: #000000; ">&nbsp;getFullPath(){<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(window.navigator.userAgent.indexOf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">MSIE</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;{</span><span style="color: #008000; ">//</span><span style="color: #008000; ">IE</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.select();<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;document.selection.createRange().text;<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">{</span><span style="color: #008000; ">//</span><span style="color: #008000; ">FireFox&nbsp;&amp; Chrome<br /></span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">var</span><span style="color: #000000; ">&nbsp;file&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">obj.files[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">];&nbsp;<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">var</span><span style="color: #000000; ">&nbsp;reader&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;FileReader();&nbsp;<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reader.onload&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">function</span><span style="color: #000000; ">(e){<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;e.target.result;<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reader.readAsDataURL(file);<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">}</span></div><p>&nbsp;</p><p style="padding: 0px 0px 15px; margin: 0px; color: #555555; font-family: 宋体, 'Arial Narrow', arial, serif; line-height: 28px; background-color: #ffffff; ">注意这边onload 是闭包，会先执行reader.readAsDataURL(file)里面的方法。<br />找了好久都没有出来，原来要这样写。<br /><div>// objPreview.src = obj.files[0].getAsDataURL(); //这个也适用于FF</div>转载自&nbsp;<a href="http://fengxubb.blog.51cto.com/3851072/728030">路在何方</a>，</p><img src ="http://www.blogjava.net/LaozhonG/aggbug/374174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/LaozhonG/" target="_blank">LaozhonG</a> 2012-04-14 16:06 <a href="http://www.blogjava.net/LaozhonG/archive/2012/04/14/374174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Chrome 快捷键</title><link>http://www.blogjava.net/LaozhonG/archive/2012/03/08/371547.html</link><dc:creator>LaozhonG</dc:creator><author>LaozhonG</author><pubDate>Thu, 08 Mar 2012 13:13:00 GMT</pubDate><guid>http://www.blogjava.net/LaozhonG/archive/2012/03/08/371547.html</guid><wfw:comment>http://www.blogjava.net/LaozhonG/comments/371547.html</wfw:comment><comments>http://www.blogjava.net/LaozhonG/archive/2012/03/08/371547.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/LaozhonG/comments/commentRss/371547.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/LaozhonG/services/trackbacks/371547.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: chrome浏览器Windows版快捷键列表：　　Google Chrome 浏览器标签页和窗口快捷键：                           Ctrl+N             打开新窗口。                               Ctrl+T             打开新标签页。             ...&nbsp;&nbsp;<a href='http://www.blogjava.net/LaozhonG/archive/2012/03/08/371547.html'>阅读全文</a><img src ="http://www.blogjava.net/LaozhonG/aggbug/371547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/LaozhonG/" target="_blank">LaozhonG</a> 2012-03-08 21:13 <a href="http://www.blogjava.net/LaozhonG/archive/2012/03/08/371547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>真实的自己</title><link>http://www.blogjava.net/LaozhonG/archive/2012/03/04/371224.html</link><dc:creator>LaozhonG</dc:creator><author>LaozhonG</author><pubDate>Sun, 04 Mar 2012 11:51:00 GMT</pubDate><guid>http://www.blogjava.net/LaozhonG/archive/2012/03/04/371224.html</guid><wfw:comment>http://www.blogjava.net/LaozhonG/comments/371224.html</wfw:comment><comments>http://www.blogjava.net/LaozhonG/archive/2012/03/04/371224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/LaozhonG/comments/commentRss/371224.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/LaozhonG/services/trackbacks/371224.html</trackback:ping><description><![CDATA[如果你真有能耐、有本事，就别藏着、捏着，拿出来才算是真本事。<br />在人生的道路，愈想懂得多些，就愈发现自己是多么的无知。一直在思考，到头来，发现自己竟然还是那么的无知。<br />你把别人在路上的时间给睡过去，却还自寻烦恼，自我纠结。这无异于放弃机会，却说事实太残酷。<img src ="http://www.blogjava.net/LaozhonG/aggbug/371224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/LaozhonG/" target="_blank">LaozhonG</a> 2012-03-04 19:51 <a href="http://www.blogjava.net/LaozhonG/archive/2012/03/04/371224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>static变量、实例变量的初始化以及类加载顺序过程</title><link>http://www.blogjava.net/LaozhonG/archive/2012/02/28/370885.html</link><dc:creator>LaozhonG</dc:creator><author>LaozhonG</author><pubDate>Mon, 27 Feb 2012 16:27:00 GMT</pubDate><guid>http://www.blogjava.net/LaozhonG/archive/2012/02/28/370885.html</guid><wfw:comment>http://www.blogjava.net/LaozhonG/comments/370885.html</wfw:comment><comments>http://www.blogjava.net/LaozhonG/archive/2012/02/28/370885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/LaozhonG/comments/commentRss/370885.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/LaozhonG/services/trackbacks/370885.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="font-size: 13px; color: #008080; ">&nbsp; 1</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">public</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">class</span><font size="2">&nbsp;Outer&nbsp;{</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;&nbsp;2</span><font size="2">&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;&nbsp;3</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;&nbsp;4</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">public</span><font size="2">&nbsp;Outer()&nbsp;{</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;&nbsp;5</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("a");</font><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">构造方法，new的时候才会出现，且后于变量的创建</span><span style="font-size: 13px; color: #008000; "><br />
</span><span style="font-size: 13px; color: #008080; ">&nbsp;&nbsp;6</span><font size="2">&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;&nbsp;7</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;&nbsp;8</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;&nbsp;9</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;10</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">public</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">static</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">void</span><font size="2">&nbsp;sayOther(String&nbsp;s){</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;11</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(s);</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;12</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;13</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;14</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;15</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;16</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">public</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">int</span><font size="2">&nbsp;say(String&nbsp;s){</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;17</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(s);</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;18</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">return</span><font size="2">&nbsp;0;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;19</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;20</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;21</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;22</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">初始化块，在new时，构造方法之前,变量之前执行</span><span style="font-size: 13px; color: #008000; "><br />
</span><span style="font-size: 13px; color: #008080; ">&nbsp;23</span><font size="2">&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;{</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;24</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("c");</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;25</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inner.innerMethed("d");</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;26</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;27</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;28</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;29</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">private</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">static</span><font size="2">&nbsp;inner&nbsp;t=&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">new</span><font size="2">&nbsp;inner();</font><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">静态变量，这些都是在类加载完之前就放于内存中，且只加载这一次，new类对象时是不会再次执行的了。</span><span style="font-size: 13px; color: #008000; "><br />
</span><span style="font-size: 13px; color: #008080; ">&nbsp;30</span><font size="2">&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">static</span><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;31</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;32</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("e");</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;33</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inner.innerMethed("f");</font><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">静态初始化块，整个静态的都是在加载之前就做好初始化。</span><span style="font-size: 13px; color: #008000; "><br />
</span><span style="font-size: 13px; color: #008080; ">&nbsp;34</span><font size="2">&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">new</span><font size="2">&nbsp;inner();</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;35</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;36</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;37</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;38</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">private</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">int</span><font size="2">&nbsp;i=say("g");</font><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">在new时，先于构造但是后于初始化块的一个实例变量，也即：实例对象：（实例初始化块，实例变量）---&gt;构造方法</span><span style="font-size: 13px; color: #008000; "><br />
</span><span style="font-size: 13px; color: #008080; ">&nbsp;39</span><font size="2">&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">private</span><font size="2">&nbsp;inner&nbsp;tt=</font><span style="font-size: 13px; color: #0000ff; ">new</span><font size="2">&nbsp;inner();</font><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">整个是在类加载ClassLoader之后初始化变量时，才做。每个new对象都会执行上面这个步骤</span><span style="font-size: 13px; color: #008000; "><br />
</span><span style="font-size: 13px; color: #008080; ">&nbsp;40</span><font size="2">&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">private</span><font size="2">&nbsp;innerOther&nbsp;ttt=</font><span style="font-size: 13px; color: #0000ff; ">new</span><font size="2">&nbsp;innerOther();</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;41</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;42</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;43</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;44</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">static</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">class</span><font size="2">&nbsp;inner{</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;45</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;46</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;47</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">public</span><font size="2">&nbsp;inner(){</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;48</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("h");</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;49</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;50</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;51</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;52</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">public</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">static</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">void</span><font size="2">&nbsp;innerMethed(String&nbsp;s){</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;53</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(s);</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;54</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;55</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;56</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;57</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;58</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;59</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("i");</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;60</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;61</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;62</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;63</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;64</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">static</span><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;65</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;66</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("j");</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;67</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;68</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;69</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;70</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;71</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;72</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;73</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;74</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">class</span><font size="2">&nbsp;innerOther{</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;75</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;76</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;77</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">public</span><font size="2">&nbsp;innerOther(){</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;78</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("k");</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;79</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;80</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;81</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;82</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;83</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("l");</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;84</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;85</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;86</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;87</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;88</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;89</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;90</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;91</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;92</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">public</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">static</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">void</span><font size="2">&nbsp;main(String[]&nbsp;args)&nbsp;{</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;93</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("m");</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;94</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Outer&nbsp;outer&nbsp;=&nbsp;</font><span style="font-size: 13px; color: #0000ff; ">new</span><font size="2">&nbsp;Outer();</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;95</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("n");</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;96</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
<span style="font-size: 13px; color: #008080; ">&nbsp;97</span><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">总结就是：类对象，变量的加载顺序<br />
</span><span style="font-size: 13px; color: #008080; ">&nbsp;98</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">在整个类加载完成之后，就初始化静态（静态变量，静态块），其中可以new对象，别的类调用静态方法。静态的只做这一次，然后类加载器ClassLoader就把类Class返还，执行main方法。<br />
</span><span style="font-size: 13px; color: #008080; ">&nbsp;99</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">在new类对象时，执行顺序是：（实例初始化块，实例变量）--&gt;构造方法。每new一个对象时，都会执行这个步骤。<br />
</span><span style="font-size: 13px; color: #008080; ">100</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="font-size: 13px; color: #008080; ">101</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">（静态变量、静态初始化块）&#8212;&#8212;&nbsp;》&nbsp;（变量、初始化块）&#8212;&#8212;&nbsp;》&nbsp;构造函数，（）中的内容是按照代码前后循序执行<br />
</span><span style="font-size: 13px; color: #008080; ">102</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="font-size: 13px; color: #008080; ">103</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">当有继承关系时，还是基于这个原理，如new&nbsp;Son（）；<br />
</span><span style="font-size: 13px; color: #008080; ">104</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 13px; color: #008000; ">//</span><span style="font-size: 13px; color: #008000; ">父类的静态（块和变量）--&gt;子类的静态（块和变量）--&gt;父类的（块和变量+构造方法）--&gt;子类的（块和变量+构造方法）<br />
</span><span style="font-size: 13px; color: #008080; ">105</span><font size="2">&nbsp;</font><span style="font-size: 13px; color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font color="#008000" size="2">//</font><span style="white-space: pre; ">	<br />
</span><span style="font-size: 13px; color: #008080; ">106</span><font size="2">&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;}</font><br />
<span style="font-size: 13px; color: #008080; ">107</span><font size="2">&nbsp;}</font></div>
<div style="background-color: #eeeeee; "><br />//类的是通过：装载，连接，初始化</div><div style="background-color: #eeeeee; ">//java程序在执行过程中，类，对象以及它们成员加载、初始化的顺序如下：&nbsp;</div><div style="background-color: #eeeeee; ">//<span style="white-space: pre; ">	</span>1、首先加载要创建对象的类及其直接与间接父类。&nbsp;</div><div style="background-color: #eeeeee; ">//<span style="white-space: pre; ">	</span>2、在类被加载的"同时"会将静态成员进行加载，主要包括静态成员变量的初始化，静态语句块的执行，在加载时按代码的先后顺序进行。 &lt;clinit&gt;</div><div style="background-color: #eeeeee; ">//<span style="white-space: pre; ">	</span>3、需要的类加载完成后，开始创建对象，首先会加载非静态的成员，主要包括非静态成员变量的初始化，非静态语句块的执行，在加载时按代码的先后顺序进行。&nbsp;</div><div style="background-color: #eeeeee; ">//<span style="white-space: pre; ">	</span>4、最后执行构造器，构造器执行完毕，对象生成。<br /><br /><h3><a href="http://www.open-open.com/lib/view/1328753336405">java中Class对象详解</a>&nbsp; &nbsp; &nbsp;<a href="http://wenku.baidu.com/view/96abdff4ba0d4a7302763a42.html">Java类加载过程<br /></a></h3>本文转载自<a href="http://www.blogjava.net/formatmyself/articles/30240.html">早餐2块2的变态类初始化顺序一文</a></div><h1><a id="Header1_HeaderTitle" href="http://www.blogjava.net/formatmyself/" style="color: #000000; text-decoration: none; font-size: 13px; ">早餐2块2</a></h1><h1><br /></h1><img src ="http://www.blogjava.net/LaozhonG/aggbug/370885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/LaozhonG/" target="_blank">LaozhonG</a> 2012-02-28 00:27 <a href="http://www.blogjava.net/LaozhonG/archive/2012/02/28/370885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>3种方法解决Struts2中forward问题！</title><link>http://www.blogjava.net/LaozhonG/archive/2012/02/26/370793.html</link><dc:creator>LaozhonG</dc:creator><author>LaozhonG</author><pubDate>Sun, 26 Feb 2012 08:47:00 GMT</pubDate><guid>http://www.blogjava.net/LaozhonG/archive/2012/02/26/370793.html</guid><wfw:comment>http://www.blogjava.net/LaozhonG/comments/370793.html</wfw:comment><comments>http://www.blogjava.net/LaozhonG/archive/2012/02/26/370793.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/LaozhonG/comments/commentRss/370793.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/LaozhonG/services/trackbacks/370793.html</trackback:ping><description><![CDATA[<h1><span style="font-weight: normal;"><span style="background-color: #ffffff; color: #333333; font-family: Arial; line-height: 26px; text-align: left; font-size: 10pt; ">在Struts2中沿用Struts1.2的&lt;jsp:forward page="xxx.action"&gt;&lt;/jsp:forward&gt;失效，报404错误。</span></span><span style="font-size: 10pt; background-color: #ffffff; color: #333333; font-family: Arial; line-height: 26px; text-align: left; font-weight: normal;">因为Struts2采用过滤器的方式处理请求,REQUEST,当到达页面时，FORWARD跳到Action。但是这个客户端的FORWARD并没有被拦截下来，所以找不到了。从而报出404错。记得当时试过很多方法，都不行。连一些基本的include都无法使用，所以研究了一下，结合网友提供的。</span></h1>
<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-size: 10pt; ">解决办法</span></p>
<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-size: 10pt; ">1、配置web.xml 解决，增加对FORWARD请求的过滤，自然问题就解决了</span><span style="font-size: 12pt; "><br />
</span>
</p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #000000; ">&lt;</span><span style="color: #000000; ">filter</span><span style="color: #000000; ">-</span><span style="color: #000000; ">mapping</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">filter</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">struts2</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">filter</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #008080; ">3</span>&nbsp;<span>&nbsp;&nbsp;&nbsp;</span><span>&lt;</span><span>url</span><span>-</span><span>pattern&nbsp;</span><span>&gt;</span><span>/*</span><span>&lt;/url-pattern&gt;&nbsp;<br />4 &nbsp; &nbsp;&lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt; &nbsp; &nbsp;//增加对&lt;jsp:include page="xxx.action"/&gt;及其&lt;s:include value="xxx.action"/&gt;支持<br /></span>5&nbsp;<span>&nbsp;&nbsp;&nbsp;&lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;&nbsp;<br /></span>6&nbsp;<span>&nbsp;&nbsp;&nbsp;&lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;&nbsp;&nbsp;&nbsp;<br /></span>7&nbsp;<span>&lt;/filter-mapping&gt;&nbsp;</span></div>
<p>&nbsp;</p>
<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">2、用javascript解决，让请求执行到页面时，接着执行如下的代码，发现页面需要重载，然后就重新发送请求REQUEST，这样当然就会被过滤器所截获到了。</p>
<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">
</p>
<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">script&nbsp;language</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">javascript</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">location.replace(URL)</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">script</span><span style="color: #000000; ">&gt;</span></div>
<p>&nbsp;</p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">3、利用html meta,等于也是让页面等待零秒刷新页面，重新发送请求，达到目的。</p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "></p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">meta&nbsp;</span><span style="color: #FF0000; ">http-equiv</span><span style="color: #0000FF; ">="refresh"</span><span style="color: #FF0000; ">&nbsp;content</span><span style="color: #0000FF; ">="0;URL=xxx.action"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">；</span></div><p>&nbsp;</p><p>&nbsp;</p>
<br />上文转载自<span style="color: #000000; text-decoration: none; font-family: 'Microsoft YaHei'; line-height: 30px; text-align: left; background-color: #ffffff; font-size: 10pt; "><a href="http://blog.csdn.net/fanwenqiang666/article/details/5188961" style="color: #000000; text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; text-align: left; background-color: #ffffff; ">解决Struts2中forward问题！</a></span><img src ="http://www.blogjava.net/LaozhonG/aggbug/370793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/LaozhonG/" target="_blank">LaozhonG</a> 2012-02-26 16:47 <a href="http://www.blogjava.net/LaozhonG/archive/2012/02/26/370793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2教程：处理一个form多个submit</title><link>http://www.blogjava.net/LaozhonG/archive/2012/02/20/370367.html</link><dc:creator>LaozhonG</dc:creator><author>LaozhonG</author><pubDate>Mon, 20 Feb 2012 14:20:00 GMT</pubDate><guid>http://www.blogjava.net/LaozhonG/archive/2012/02/20/370367.html</guid><wfw:comment>http://www.blogjava.net/LaozhonG/comments/370367.html</wfw:comment><comments>http://www.blogjava.net/LaozhonG/archive/2012/02/20/370367.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/LaozhonG/comments/commentRss/370367.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/LaozhonG/services/trackbacks/370367.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="line-height: 19px; font-size: 10.5pt; font-family: 宋体; background-color: #ffffff; ">在很多</span><span style="line-height: 19px; font-size: 10.5pt; font-family: 'Times New Roman'; background-color: #ffffff; ">Web</span><span style="line-height: 19px; font-size: 10.5pt; font-family: 宋体; background-color: #ffffff; ">应用中，为了完成不同的工作，一个</span><span style="line-height: 19px; font-size: 10.5pt; font-family: 'Times New Roman'; background-color: #ffffff; ">HTML form</span><span style="line-height: 19px; font-size: 10.5pt; font-family: 宋体; background-color: #ffffff; ">标签中可能有两个或多个</span><span style="line-height: 19px; font-size: 10.5pt; font-family: 'Times New Roman'; background-color: #ffffff; ">submit</span><span style="line-height: 19px; font-size: 10.5pt; font-family: 宋体; background-color: #ffffff; ">按钮，如下面的代码所示：</span></div>
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #008080; ">1</span>&nbsp;&lt;form&nbsp;action=""&nbsp;&nbsp;method="post"&gt;<br />
<span style="color: #008080; ">2</span>&nbsp; .............................................<br />
<span style="color: #008080; ">3</span>&nbsp;&lt;input&nbsp;type="submit"&nbsp;value="保存"&nbsp;/&gt;<br />
<span style="color: #008080; ">4</span>&nbsp;&lt;input&nbsp;type="submit"&nbsp;value="打印"&nbsp;/&gt;<br />
<span style="color: #008080; ">5</span>&nbsp;&lt;/form&gt;</div>
<span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">由于在</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">&lt;form&gt;</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">中的多个提交按钮都向一个</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">action</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">提交，使用</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">Struts2 Action</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">的</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">execute</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">方法就无法判断用户点击了哪一个提交按钮。如果大家使用过</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">Struts1.x</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">就会知道在</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">Struts1.2.9</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">之前的版本需要使用一个</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">LookupDispatchAction</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">动作来处理含有多个</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">submit</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">的</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">form</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">。但使用</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">LookupDispatchAction</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">动作需要访问属性文件，还需要映射，比较麻烦。从</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">Struts1.2.9</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">开始，加入了一个</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">EventDispatchAction</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">动作。这个类可以通过</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">java</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">反射来调用通过</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">request</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">参数指定的动作（实际上只是判断某个请求参数是不存在，如果存在，就调用在</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">action</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">类中和这个参数同名的方法）。使用</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">EventDispatchAction</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">必须将</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">submit</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">的</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">name</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">属性指定不同的值以区分每个</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">submit</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">。而在</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; text-indent: 29px; color: #000000; background-color: #ffffff; ">Struts2</span><span style="font-size: 13px; line-height: 19px; text-indent: 29px; font-family: 宋体; color: #000000; background-color: #ffffff; ">中将更容易实现这个功能。</span>&nbsp;<br />
&nbsp; &nbsp;<br />
<div>当然，我们也可以模拟EventDispatchAction的方法通过request获得和处理参数信息。但这</div>
<div>样比较麻烦。在Struts2中提供了另外一种方法，使得无需要配置可以在同一个action类中执</div>
<div>行不同的方法（默认执行的是execute方法）。使用这种方式也需要通过请求参来来指定要执</div>
<div>行的动作。请求参数名的格式为</div>
<div>action!method.action</div>
<div>注：由于Struts2只需要参数名，因此，参数值是什么都可以。</div>
<div>下面我就给出一个实例程序来演示如何处理有多个submit的form：</div>
<div>【第1步】实现主页面(more_submit.jsp)<br />
<br />
<div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;&lt;%@&nbsp;page&nbsp;language="java"&nbsp;<span style="color: #0000FF; ">import</span>="java.util.*"&nbsp;pageEncoding="GBK"%&gt;<br />
<span style="color: #008080; ">&nbsp;2</span>&nbsp;&lt;%@&nbsp;taglib&nbsp;prefix="s"&nbsp;uri="/struts-tags"&nbsp;%&gt;<br />
<span style="color: #008080; ">&nbsp;3</span>&nbsp;&lt;html&gt;<br />
<span style="color: #008080; ">&nbsp;4</span>&nbsp;&lt;head&gt;<br />
<span style="color: #008080; ">&nbsp;5</span>&nbsp;&lt;title&gt;My&nbsp;JSP&nbsp;'hello.jsp'&nbsp;starting&nbsp;page&lt;/title&gt;<br />
<span style="color: #008080; ">&nbsp;6</span>&nbsp;&lt;/head&gt;<br />
<span style="color: #008080; ">&nbsp;7</span>&nbsp;&lt;body&gt;<br />
<span style="color: #008080; ">&nbsp;8</span>&nbsp;&lt;s:form&nbsp;action="submit.action"&nbsp;&gt;<br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;&lt;s:textfield&nbsp;name="msg"&nbsp;label="输入内容"/&gt;<br />
<span style="color: #008080; ">10</span>&nbsp;&lt;s:submit&nbsp;name="save"&nbsp;value="保存"&nbsp;align="left"&nbsp;method="save"/&gt;<br />
<span style="color: #008080; ">11</span>&nbsp;&lt;s:submit&nbsp;name="print"&nbsp;value="打印"&nbsp;align="left"&nbsp;method="print"&nbsp;/&gt;<br />
<span style="color: #008080; ">12</span>&nbsp;&lt;/s:form&gt;<br />
<span style="color: #008080; ">13</span>&nbsp;&lt;/body&gt;<br />
<span style="color: #008080; ">14</span>&nbsp;&lt;/html&gt;</div>
</div>
</div>
<div>在more_submit.jsp中有两个submit：保存和打印。其中分别通过method属性指定了要调用</div>
<div>的方法：save和print。因此，在Action类中必须要有save和print方法。</div>
<div>【第2步】实现Action类（MoreSubmitAction）<br />
<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">package</span>&nbsp;action;<br />
<span style="color: #008080; ">&nbsp;2</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;javax.servlet.http.*;<br />
<span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;com.opensymphony.xwork2.ActionSupport;<br />
<span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;org.apache.struts2.interceptor.*;<br />
<span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;MoreSubmitAction&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;ActionSupport&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;ServletRequestAware<br />
<span style="color: #008080; ">&nbsp;7</span>&nbsp;{<br />
<span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;String&nbsp;msg;<br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;javax.servlet.http.HttpServletRequest&nbsp;request;<br />
<span style="color: #008080; ">10</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;获得HttpServletRequest对象</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setServletRequest(HttpServletRequest&nbsp;request)<br />
<span style="color: #008080; ">12</span>&nbsp;{<br />
<span style="color: #008080; ">13</span>&nbsp;<span style="color: #0000FF; ">this</span>.request&nbsp;=&nbsp;request;<br />
<span style="color: #008080; ">14</span>&nbsp;}<br />
<span style="color: #008080; ">15</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;处理save&nbsp;submit按钮的动作</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;save()&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;Exception<br />
<span style="color: #008080; ">17</span>&nbsp;{<br />
<span style="color: #008080; ">18</span>&nbsp;request.setAttribute("result",&nbsp;"成功保存["&nbsp;+&nbsp;msg&nbsp;+&nbsp;"]");<br />
<span style="color: #008080; ">19</span>&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"save";<br />
<span style="color: #008080; ">20</span>&nbsp;}<br />
<span style="color: #008080; ">21</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;处理print&nbsp;submit按钮的动作</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;print()&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;Exception<br />
<span style="color: #008080; ">23</span>&nbsp;{<br />
<span style="color: #008080; ">24</span>&nbsp;request.setAttribute("result",&nbsp;"成功打印["&nbsp;+&nbsp;msg&nbsp;+&nbsp;"]");<br />
<span style="color: #008080; ">25</span>&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"print";<br />
<span style="color: #008080; ">26</span>&nbsp;}<br />
<span style="color: #008080; ">27</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;getMsg()<br />
<span style="color: #008080; ">28</span>&nbsp;{<br />
<span style="color: #008080; ">29</span>&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;msg;<br />
<span style="color: #008080; ">30</span>&nbsp;}<br />
<span style="color: #008080; ">31</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setMsg(String&nbsp;msg)<br />
<span style="color: #008080; ">32</span>&nbsp;{<br />
<span style="color: #008080; ">33</span>&nbsp;<span style="color: #0000FF; ">this</span>.msg&nbsp;=&nbsp;msg;<br />
<span style="color: #008080; ">34</span>&nbsp;}<br />
<span style="color: #008080; ">35</span>&nbsp;}</div>
<div>上面的代码需要注意如下两点：</div>
<div>save和print方法必须存在，否则会抛出java.lang.NoSuchMethodException异常。</div>
<div>Struts2 Action动作中的方法和Struts1.x Action的execute不同，只使用Struts2 Action动作的</div>
<div>execute方法无法访问request对象，因此，Struts2 Action类需要实现一个Struts2自带的拦</div>
<div>截器来获得request对象，拦截器如下：</div>
<div>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->org.apache.struts2.interceptor.&nbsp;ServletRequestAware</div>
</div>
<div>【第3步】配置Struts2 Action</div>
<div>struts.xml的代码如下：<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;?&gt;<br />
<span style="color: #008080; ">&nbsp;2</span>&nbsp;&lt;!DOCTYPE&nbsp;struts&nbsp;PUBLIC<br />
<span style="color: #008080; ">&nbsp;3</span>&nbsp;"-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;2.0//EN"<br />
<span style="color: #008080; ">&nbsp;4</span>&nbsp;"http://struts.apache.org/dtds/struts-2.0.dtd"&gt;<br />
<span style="color: #008080; ">&nbsp;5</span>&nbsp;&lt;struts&gt;<br />
<span style="color: #008080; ">&nbsp;6</span>&nbsp;&lt;<span style="color: #0000FF; ">package</span>&nbsp;name="demo"&nbsp;<span style="color: #0000FF; ">extends</span>="struts-default"&nbsp;&gt;<br />
<span style="color: #008080; ">&nbsp;7</span>&nbsp;&lt;action&nbsp;name="submit"&nbsp;<span style="color: #0000FF; ">class</span>="action.MoreSubmitAction"&gt;<br />
<span style="color: #008080; ">&nbsp;8</span>&nbsp;&lt;result&nbsp;name="save"&nbsp;&gt;<br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;/result.jsp<br />
<span style="color: #008080; ">10</span>&nbsp;&lt;/result&gt;<br />
<span style="color: #008080; ">11</span>&nbsp;&lt;result&nbsp;name="print"&gt;<br />
<span style="color: #008080; ">12</span>&nbsp;/result.jsp<br />
<span style="color: #008080; ">13</span>&nbsp;&lt;/result&gt;<br />
<span style="color: #008080; ">14</span>&nbsp;&lt;/action&gt;<br />
<span style="color: #008080; ">15</span>&nbsp;&lt;/<span style="color: #0000FF; ">package</span>&gt;<br />
<span style="color: #008080; ">16</span>&nbsp;&lt;/struts&gt;</div>
<div>【第4步】编写结果页（result.jsp）</div>
<div style="padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; width: 1085px; word-break: break-all; "><span style="color: #008080; ">1</span>&nbsp;&lt;%@&nbsp;page&nbsp;pageEncoding="GBK"%&gt;<br />
<span style="color: #008080; ">2</span>&nbsp;&lt;html&gt;<br />
<span style="color: #008080; ">3</span>&nbsp;&lt;head&gt;<br />
<span style="color: #008080; ">4</span>&nbsp;&lt;title&gt;提交结果&lt;/title&gt;<br />
<span style="color: #008080; ">5</span>&nbsp;&lt;/head&gt;<br />
<span style="color: #008080; ">6</span>&nbsp;&lt;body&gt;<br />
<span style="color: #008080; ">7</span>&nbsp;&lt;h1&gt;${result}&lt;/h1&gt;<br />
<span style="color: #008080; ">8</span>&nbsp;&lt;/body&gt;<br />
<span style="color: #008080; ">9</span>&nbsp;&lt;/html&gt; &nbsp;</div>
&nbsp;<br />
<div>在result.jsp中将在save和print方法中写到request属性中的执行结果信息取出来，并输出到</div>
<div>客户端。</div>
<div>启动Tomcat后，在IE中执行如下的URL来测试程序：</div>
<div>http://localhost:8080/moresubmit/more_submit.jsp</div>
<div>大家也可以直接使用如下的URL来调用save和print方法：</div>
<div>调用save方法：http://localhost:8080/moresubmit/submit!save.action</div>
<div>调用print方法：http://localhost:8080/moresubmit/submit!print.action</div>
<br />以前为了写这个想了很长时间，才知道原来name这个属性作用还真的蛮大。<br />其实再非struts标签中，即纯粹的html标签中也可以使用，写法为：<br /><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&lt;input&nbsp;type="submit"&nbsp;name="method:save"&nbsp;value="save"/&gt;<br />&lt;input&nbsp;type="submit"&nbsp;name="method:print"&nbsp;value="print"/&gt;</div></div>
上文出自nokiaguy的个人博客，如果想查看原文请点击《
<a id="viewpost1_TitleUrl" href="http://www.blogjava.net/nokiaguy/archive/2008/04/16/193287.html" style="color: #0000ff; text-decoration: none; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-weight: normal; ">Struts2教程2：处理一个form多个submit</a>
》</div>
</div><img src ="http://www.blogjava.net/LaozhonG/aggbug/370367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/LaozhonG/" target="_blank">LaozhonG</a> 2012-02-20 22:20 <a href="http://www.blogjava.net/LaozhonG/archive/2012/02/20/370367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts 2.0——Converter转换器——批量封装对象（Bean）</title><link>http://www.blogjava.net/LaozhonG/archive/2012/02/20/370365.html</link><dc:creator>LaozhonG</dc:creator><author>LaozhonG</author><pubDate>Mon, 20 Feb 2012 13:47:00 GMT</pubDate><guid>http://www.blogjava.net/LaozhonG/archive/2012/02/20/370365.html</guid><wfw:comment>http://www.blogjava.net/LaozhonG/comments/370365.html</wfw:comment><comments>http://www.blogjava.net/LaozhonG/archive/2012/02/20/370365.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/LaozhonG/comments/commentRss/370365.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/LaozhonG/services/trackbacks/370365.html</trackback:ping><description><![CDATA[<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">不知道大家是否遇过这种情况，在一个页面里同时提交几个对象。例如，在发布产品的页面，同时发布几个产品。</span>&nbsp;<br />
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">首先，在源代码文件夹下的tutorial包中新建Product.java文件，内容如下：</span>&nbsp;<br />
<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">package</span>&nbsp;tutorial;<br />
<span style="color: #008080; ">&nbsp;2</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;java.util.Date;<br />
<span style="color: #008080; ">&nbsp;4</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;5</span>&nbsp;publicclass&nbsp;Product&nbsp;{<br />
<span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;String&nbsp;name;<br />
<span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;privatedouble&nbsp;price;<br />
<span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;Date&nbsp;dateOfProduction;<br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Date&nbsp;getDateOfProduction()&nbsp;{<br />
<span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;dateOfProduction;<br />
<span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;publicvoid&nbsp;setDateOfProduction(Date&nbsp;dateOfProduction)&nbsp;{<br />
<span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.dateOfProduction&nbsp;=&nbsp;dateOfProduction;<br />
<span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;getName()&nbsp;{<br />
<span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;name;<br />
<span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;publicvoid&nbsp;setName(String&nbsp;name)&nbsp;{<br />
<span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.name&nbsp;=&nbsp;name;<br />
<span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;publicdouble&nbsp;getPrice()&nbsp;{<br />
<span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;price;<br />
<span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;publicvoid&nbsp;setPrice(<span style="color: #0000FF; ">double</span>&nbsp;price)&nbsp;{<br />
<span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.price&nbsp;=&nbsp;price;<br />
<span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">33</span>&nbsp;}<br />
</div>
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">然后，在同上的包下添加ProductConfirm.java类，代码如下：</span>&nbsp;<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">package</span>&nbsp;tutorial;<br />
<span style="color: #008080; ">&nbsp;2</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;java.util.List;<br />
<span style="color: #008080; ">&nbsp;4</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;com.opensymphony.xwork2.ActionSupport;<br />
<span style="color: #008080; ">&nbsp;6</span>&nbsp;<br />
<span style="color: #008080; ">&nbsp;7</span>&nbsp;publicclass&nbsp;ProductConfirm&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;ActionSupport&nbsp;{<br />
<span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;List&lt;Product&gt;&nbsp;products;<br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;<br />
<span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;List&lt;Product&gt;&nbsp;getProducts()&nbsp;{<br />
<span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;products;<br />
<span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">13</span>&nbsp;<br />
<span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;publicvoid&nbsp;setProducts(List&lt;Product&gt;&nbsp;products)&nbsp;{<br />
<span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.products&nbsp;=&nbsp;products;<br />
<span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
<span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;execute()&nbsp;{<br />
<span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(Product&nbsp;p&nbsp;:&nbsp;products)&nbsp;{<br />
<span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(p.getName()&nbsp;+&nbsp;"&nbsp;|&nbsp;"+&nbsp;p.getPrice()&nbsp;+"&nbsp;|&nbsp;"&nbsp;+&nbsp;p.getDateOfProduction());<br />
<span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;SUCCESS;<br />
<span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">25</span>&nbsp;}</div>
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">接看，在同上的包中加入ProductConfirm-conversion.properties，代码如下：<br />
</span>
<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">1</span>&nbsp;Element_products=tutorial.Product</div>
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">再在struts.xml文件中配置ProductConfirm Action，代码片段如下：</span>&nbsp;<br />
<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">1</span>&nbsp;&lt;action&nbsp;name="ProductConfirm"&nbsp;<span style="color: #0000FF; ">class</span>="tutorial.ProductConfirm"&gt;<br />
<span style="color: #008080; ">2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;result&gt;/ShowProducts.jsp&lt;/result&gt;<br />
<span style="color: #008080; ">3</span>&nbsp;&lt;/action&gt;&nbsp;&nbsp;</div>
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">在WEB文件夹下新建AddProducts.jsp，内容如下：<br />
</span>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;&lt;%@&nbsp;page&nbsp;&nbsp;contentType="text/html;&nbsp;charset=UTF-8"%&gt;<br />
<span style="color: #008080; ">&nbsp;2</span>&nbsp;&lt;%@taglib&nbsp;prefix="s"&nbsp;uri="/struts-tags"%&gt;<br />
<span style="color: #008080; ">&nbsp;3</span>&nbsp;&lt;html&gt;<br />
<span style="color: #008080; ">&nbsp;4</span>&nbsp;&lt;head&gt;<br />
<span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Hello&nbsp;World&lt;/title&gt;<br />
<span style="color: #008080; ">&nbsp;6</span>&nbsp;&lt;/head&gt;<br />
<span style="color: #008080; ">&nbsp;7</span>&nbsp;&lt;body&gt;<br />
<span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;s:form&nbsp;action="ProductConfirm"&nbsp;theme="simple"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;table&gt;<br />
<span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&nbsp;style="background-color:powderblue;&nbsp;font-weight:bold;"&gt;<br />
<span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;Product&nbsp;Name&lt;/td&gt;<br />
<span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;Price&lt;/td&gt;<br />
<span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;Date&nbsp;of&nbsp;production&lt;/td&gt;<br />
<span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
<span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;s:iterator&nbsp;value="new&nbsp;int[3]"&nbsp;status="stat"&gt;<br />
<span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br />
<span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:textfield&nbsp;name="%{'products['+#stat.index+'].name'}"/&gt;&lt;/td&gt;<br />
<span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:textfield&nbsp;name="%{'products['+#stat.index+'].price'}"/&gt;&lt;/td&gt;<br />
<span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:textfield&nbsp;name="%{'products['+#stat.index+'].dateOfProduction'}"/&gt;&lt;/td&gt;<br />
<span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
<span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/s:iterator&gt;<br />
<span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br />
<span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;colspan="3"&gt;&lt;s:submit&nbsp;/&gt;&lt;/td&gt;<br />
<span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
<span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<br />
<span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/s:form&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">27</span>&nbsp;&lt;/body&gt;<br />
<span style="color: #008080; ">28</span>&nbsp;&lt;/html&gt;</div>
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">在同样的文件夹下创建ShowProducts.jsp，内容如下：<br />
</span>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;&lt;%@&nbsp;page&nbsp;&nbsp;contentType="text/html;&nbsp;charset=UTF-8"%&gt;<br />
<span style="color: #008080; ">&nbsp;2</span>&nbsp;&lt;%@taglib&nbsp;prefix="s"&nbsp;uri="/struts-tags"%&gt;<br />
<span style="color: #008080; ">&nbsp;3</span>&nbsp;&lt;html&gt;<br />
<span style="color: #008080; ">&nbsp;4</span>&nbsp;&lt;head&gt;<br />
<span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Hello&nbsp;World&lt;/title&gt;<br />
<span style="color: #008080; ">&nbsp;6</span>&nbsp;&lt;/head&gt;<br />
<span style="color: #008080; ">&nbsp;7</span>&nbsp;&lt;body&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;table&gt;<br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&nbsp;style="background-color:powderblue;&nbsp;font-weight:bold;"&gt;<br />
<span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;Product&nbsp;Name&lt;/td&gt;<br />
<span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;Price&lt;/td&gt;<br />
<span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;Date&nbsp;of&nbsp;production&lt;/td&gt;<br />
<span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
<span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;s:iterator&nbsp;value="products"&nbsp;status="stat"&gt;<br />
<span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br />
<span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value="name"/&gt;&lt;/td&gt;<br />
<span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;$&lt;s:property&nbsp;value="price"/&gt;&lt;/td&gt;<br />
<span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value="dateOfProduction"/&gt;&lt;/td&gt;<br />
<span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
<span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/s:iterator&gt;<br />
<span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<br />
<span style="color: #008080; ">22</span>&nbsp;&lt;/body&gt;<br />
<span style="color: #008080; ">23</span>&nbsp;&lt;/html&gt;</div>
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">发布运行应用程序，在浏览器中键入</span><a href="http://localhost:8080/Struts2_Converter/AddProducts.jsp" style="color: #1a8bc8; text-decoration: none; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">http://localhost:8080/Struts2_Converter/AddProducts.jsp</a><span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">，出现如图4所示页面：</span>&nbsp;<br />
<img src="http://www.blogjava.net/images/blogjava_net/max/16850/r_img4.gif" alt="图4 添加产品页面" />&nbsp;<br />
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; font-style: italic; line-height: 19px; background-color: #ffffff; ">图4 添加产品页面</span>&nbsp;<br />
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">按图4所示，填写表单，按&#8220;Submit&#8221;提交，出现图5所示页面：</span>&nbsp;<br />
<img src="http://www.blogjava.net/images/blogjava_net/max/16850/r_img5.gif" alt="图5 查看产品页面" />&nbsp;<br />
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; font-style: italic; line-height: 19px; background-color: #ffffff; ">图5 查看产品页面</span>&nbsp;<br />
<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">查看服务器的控制台，有如下输出：</span>&nbsp;<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->Expert&nbsp;One-on-One&nbsp;J2EE&nbsp;Development&nbsp;without&nbsp;EJB&nbsp;|&nbsp;39.99&nbsp;|&nbsp;Mon&nbsp;Jun&nbsp;2100:00:00&nbsp;CST&nbsp;2004<br />
Pro&nbsp;Spring&nbsp;|&nbsp;32.99&nbsp;|&nbsp;Mon&nbsp;Jan&nbsp;3100:00:00&nbsp;CST&nbsp;2005<br />
Core&nbsp;J2EE&nbsp;Patterns:&nbsp;Best&nbsp;Practices&nbsp;and&nbsp;Design&nbsp;Strategies,&nbsp;Second&nbsp;Edition&nbsp;|&nbsp;34.64&nbsp;|&nbsp;Sat&nbsp;May&nbsp;1000:00:00&nbsp;CST&nbsp;2003</div>
<p style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">上面的代码并不复杂，但有几点需要说明：</p>
<ol style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">
     <li>ProductConfirm文件中的for(Product p : productes)的写法是J2SE 5.0中的新特性，作用遍历products列表；</li>
     <li>List&lt;Product&gt;也是J2SE 5.0的才有的泛型（Generic）；</li>
     <li>ProductConfirm-conversion.properties中&#8220;Element_products=tutorial.Product&#8221;是告诉Struts 2.0列表products的元素的类型为Product，而不是定义转换器；</li>
     <li>在AddProducts.jsp的&lt;s:textfield&gt;的name为&#8220;<span style="color: #0000ff; ">%{'products['+#stat.index+'].name'}</span>&#8221;，%{exp}格式表示使用OGNL表达式，上述表达式的相当于<span style="color: #0000ff; ">&lt;%= "products[" + stat.index + "].name" %&gt;</span>，至于&lt;s:iterator&gt;标志的用法可以参考原文主人博客的文章《<a id="CategoryEntryList1_EntryStoryList_Entries_ctl04_TitleUrl" href="http://www.blogjava.net/max/archive/2006/10/18/75857.html" style="text-decoration: none; font-weight: bold; color: #1a8bc8; ">常用的Struts 2.0的标志（Tag）介绍</a>》。<br />
     <h2>
     <span style="font-size: 13px; ">&nbsp;</span></h2>
     </li>
</ol>
<h2 style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 19px; background-color: #ffffff; ">转换错误处理<br /><br /><span style="font-size: 13px; font-weight: normal; ">不知道大家在运行上面的例子时，有没有填错日期或数字情况，又或者您有没有思考过这种情况？如果还没有尝试的朋友可以试一下，在第一行的Price和Date of production中输入英文字母，然后按&#8220;Submit&#8221;提交。你会看到页面为空白，再看一下服务器的控制台输出，有如下语句：&nbsp;</span><span style="font-size: 13px; font-weight: normal; background-color: #eeeeee; ">警告: No result defined for action tutorial.ProductConfirm and result input</span><span style="font-size: 13px; font-weight: normal; ">，它提示我们没有为Action定义输入结果，所以，我们应该在源代码文件夹下的struts.xml中的ProductConfirm Action中加入以下代码：</span>&nbsp;<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #000000; ">&lt;</span><span style="color: #000000; ">result&nbsp;name</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">input</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;/</span><span style="color: #000000; ">AddProducts.jsp</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">result</span><span style="color: #000000; ">&gt;</span></div></h2><span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">重新加载应用程序，刷新浏览器重新提交请求，这时页面返回AddProducts.jsp，格式错误的输入框的值被保留，如下图6所示：</span>&nbsp;<br /><img src="http://www.blogjava.net/images/blogjava_net/max/16850/r_img6.gif" alt="图6 没有提示的错返回页面" />&nbsp;<br />&nbsp;<span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; font-style: italic; line-height: 19px; background-color: #ffffff; ">图6 没有提示的错返回页面<br /><br /></span><span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">当然，我们还可以在页面上加上错误提示信息，通过在AddProducts.jsp的&#8220;&lt;body&gt;&#8221;后，加入下面代码可以实现：</span>&nbsp;<br /><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #0000ff; ">&lt;</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #800000; ">div&nbsp;</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #ff0000; ">style</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #0000ff; ">="color:red"</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #0000ff; ">&gt;</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; "><br />&nbsp; &nbsp;&nbsp;</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #0000ff; ">&lt;</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #800000; ">s:fielderror&nbsp;</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #0000ff; ">/&gt;</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; "><br /></span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #0000ff; ">&lt;/</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #800000; ">div</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #eeeeee; color: #0000ff; ">&gt;</span>&nbsp;<br /><br /><span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">刷新浏览器，重新提交请求，出现如图7所示页面：</span>&nbsp;<br /><img src="http://www.blogjava.net/images/blogjava_net/max/16850/r_img7.gif" alt="图7 带提示的错返回页面" />&nbsp;<br /><span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 12px; font-style: italic; line-height: 19px; background-color: #ffffff; ">图7 带提示的错返回页面</span>&nbsp;<br /><span style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">以上的功能的都是通过Struts 2.0里的一个名为conversionError的拦截器（interceptor）工作，它被注册到默认拦截器栈（default interceptor stack）中。Struts 2.0在转换出错后，会将错误放到ActionContext中，在conversionError的作用是将这些错误封装为对应的项错误（field error），因此我们可以通过&lt;s:fielderror /&gt;来将其在页面上显示出来。另外，大家看第二和第三行的Price都被赋为0.0的值，而第一行则保留其错误值。这同样是conversionError的功劳&#8212;&#8212;没有出错的行调用的products[index].price（默认值为0.0），而出错的行则会被赋为页面所提交的错误值，这样可以提供更好的用户体验。</span>&nbsp;<br /><br />上文中，还需要编写一个转换器，用于格式化日期输入输出！<br />本文转自Max，更加详细请看原文《<a id="viewpost1_TitleUrl" href="http://www.blogjava.net/max/archive/2006/11/07/79602.html" style="text-decoration: none; color: #1a8bc8; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 15px; font-weight: bold; line-height: 19px; background-color: #ffffff; ">转换器（Converter）&#8212;&#8212;Struts 2.0中的魔术师</a>》<br /><img src ="http://www.blogjava.net/LaozhonG/aggbug/370365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/LaozhonG/" target="_blank">LaozhonG</a> 2012-02-20 21:47 <a href="http://www.blogjava.net/LaozhonG/archive/2012/02/20/370365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>莫名的想你</title><link>http://www.blogjava.net/LaozhonG/archive/2012/02/20/370362.html</link><dc:creator>LaozhonG</dc:creator><author>LaozhonG</author><pubDate>Mon, 20 Feb 2012 13:17:00 GMT</pubDate><guid>http://www.blogjava.net/LaozhonG/archive/2012/02/20/370362.html</guid><wfw:comment>http://www.blogjava.net/LaozhonG/comments/370362.html</wfw:comment><comments>http://www.blogjava.net/LaozhonG/archive/2012/02/20/370362.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/LaozhonG/comments/commentRss/370362.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/LaozhonG/services/trackbacks/370362.html</trackback:ping><description><![CDATA[&nbsp; &nbsp;&nbsp;<span style="color: #444444; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">坐在教室里，远眺河西，远眺大学城，这里无疑是一个观赏点。<br /></span>&nbsp; &nbsp;&nbsp;<span style="color: #444444; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">远远望去一片朦胧，看着那些熟悉的地方，岂能不叫我兀自回忆忧伤</span><span style="background-color: #ffffff; ">。</span><span style="color: #444444; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">一时间，竟不能自拔。<br /></span>&nbsp; &nbsp;&nbsp;<span style="color: #444444; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">也许长沙并不适合我，因为它只会使我更加的忧伤，更加的无心战斗，一直这样下去，只会身心难堪&#8230;脱离她吧，离开她吧！<br /></span>&nbsp; &nbsp;&nbsp;<span style="color: #444444; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">也许你真的不适合生活在长沙，也许长沙真的不适合你&#8230;</span>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<img src ="http://www.blogjava.net/LaozhonG/aggbug/370362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/LaozhonG/" target="_blank">LaozhonG</a> 2012-02-20 21:17 <a href="http://www.blogjava.net/LaozhonG/archive/2012/02/20/370362.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>