<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>NaddyLee的博客</title>
<link>http://blogger.org.cn/blog/blog.asp?name=NaddyLee</link>
<description>NaddyLee的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[Hibernate：Query.list 与 Query.iterate 的区别]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=NaddyLee&amp;id=31540</link>
<author>NaddyLee</author>
<pubDate>2008/1/25 17:03:19</pubDate>
<description><![CDATA[<P>list: 结果存入缓存，但不从缓存里面取；查询时属性连同id一起找出来，只有“一句”select；<BR>&nbsp; iterate：结果存入缓存，并在缓存中查找结果；查询时先找出所有的 id，然后根据 id 到缓存里面查找，如果没有命中，再到数据库中查找该id对应的其他属性。可能会有多行 select。</P>
<P>分页：firstResult 与 maxResult 的影响。<BR>Oracle：支持 rownum &lt;= ? 的写法，因此在返回的结果集大小上对 list 和 iterate 都是一样的。但 maxResult 比较大时对使用 list 较为有利（不考虑缓存），因为 iterate 是要按 id 进行多次查找的。<BR>&nbsp;&nbsp;&nbsp; 对于不支持部分结果集的数据库，必须返回所有结果（？）。这个时候，list 可能会消耗大量的内存并导致效率降低。iterate 因为只是 返回所有id，相对较好。<BR>&nbsp;&nbsp;&nbsp; 不过如果是大数据量的应用，应该还是要用支持部分结果集的数据库。</P>
<P>如果使用二级缓存且缓存命中率较高（数据经常使用，并且较少更新），此时可以使用 iterate。</P>
<P>一个简单的测试结果：</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">查询某对象，共</SPAN><SPAN lang=EN-US><FONT face=Calibri>1000</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">个记录，测试 5 次，每次分别取</SPAN><SPAN lang=EN-US><FONT face=Calibri> 10</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">、</SPAN><SPAN lang=EN-US><FONT face=Calibri>20</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">、</SPAN><SPAN lang=EN-US><FONT face=Calibri>50</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">个结果，</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">平均访问时间如下（ms）。数据库</SPAN><SPAN lang=EN-US><FONT face=Calibri>Oracle，无二级缓存</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>Query.list</FONT></SPAN></P>
<P>
<TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>10<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>20<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>50<o:p></o:p></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>1<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>89<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>94<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>266<o:p></o:p></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>2<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>143<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>92<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>255<o:p></o:p></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 3">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>3<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>106<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>106<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>106<o:p></o:p></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 4">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>4</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>293</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>150</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>104</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 5; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>5</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>151</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>167</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>104</FONT></SPAN></P></TD></TR></TBODY></TABLE></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>Query.iterate</FONT></SPAN></P>
<P>
<TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>10<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>20<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>50<o:p></o:p></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>1<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>273<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>390<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>403<o:p></o:p></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>2<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>120<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>311<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>407<o:p></o:p></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 3">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>3<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>270<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>399<o:p></o:p></FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>253<o:p></o:p></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 4">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>4</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>196</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>306</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>250</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 5; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>5</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.5pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>275</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>153</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 106.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=142>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>257</FONT></SPAN></P></TD></TR></TBODY></TABLE></P>]]></description>
</item><item>
<title><![CDATA[长事务浏览器超时]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=NaddyLee&amp;id=29931</link>
<author>NaddyLee</author>
<pubDate>2007/11/22 17:22:24</pubDate>
<description><![CDATA[<P>关键字：浏览器 IE 超时 长事务 长时间</P>
<P>&nbsp; 在服务器端处理一些耗时很长的处理的时候，有时会遇到超时的情况。在无需发送响应到 IE 的时候，此问题无关大雅。但在需要处理完后发送响应的情况下，往往导致浏览器超时无响应。</P>
<P>&nbsp;&nbsp;&nbsp; 今天在做一个统计下载的时候遇到这种情况。由于生成统计表格需要很长时间，到下载的时候浏览器已超时。</P>
<P>&nbsp;&nbsp;&nbsp; 解决：在统计时，同时打开一个请求下载的页面，这个页面会定时刷新，重复请求。在数据准备好的情况下，进行下载；未准备好的情况下，显示提示语。</P>
<P>&nbsp;&nbsp;&nbsp; 总结：对于这种长时间的会导致浏览器超时的处理，可以先在服务器方处理完，然后用异步的方式（浏览器重复询问，异步通知等）方式来取得响应。</P>]]></description>
</item><item>
<title><![CDATA[从小山智丽看大国的尺度]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=NaddyLee&amp;id=23219</link>
<author>NaddyLee</author>
<pubDate>2007/3/14 12:33:50</pubDate>
<description><![CDATA[
<DIV class=c4 align=center><B>从小山智丽看大国的尺度 </B></DIV><BR>
<DIV class=c2 align=center>　　近日网络上叶永烈先生的一篇文章,引起了网友的广泛争论.叶永烈是谁,相信原来除了爱好文学的读者,没有人会对他有太多的了解,但今天,他的一篇关于小山智丽的文章,让很多人认识了她,也让很多年轻人知道了曾经有一位在80年代乒坛上颇惹争议的人物 - 小山智丽.关于小山智丽,她已经40多岁了,完全是一个过去式的人物,和千千万万曾经打出辉煌的中国国家运动员一样,她应该已经从人们的视野中退役了,但今天,她再一次成为焦点,与前国家举重冠军邹春兰一起, 重新进入了人们的视线. </DIV>
<P>　　她们两个人代表的是不同的悲剧,当人们在反思她们的时候,相信有人会将矛头直指现行的中国竞技体育制度.不错,邹春兰现象,是一种失败,但小山智丽事件,绝不能简单地扣上中国竞技体育失败的帽子."让球"固然违背了竞技体育的原则,但今天我们所关心的,是让球后的结果.我相信在当时的情形下,对于小山智丽这么一个具有倔强性格的年轻女孩来说,唯一能实现她奥运愿望的途径,就是和许多中国军团一样,加入外国国籍参与竞赛. </P>
<P>　　如果当时她没有认识小山英之,而是认识了一个泰国英之的话,她一定会毫不犹豫地代表泰国参赛.对于运功员而言,获的世界冠军,是其毕生的追求,我们无可否认.人活在世上,追求的是其自身价值的体现.但小山智丽的失败,在于其为实现目标而选择的平台.当她喊着"哟西",手握拳头,面对中国观众的时候,无论她如何解释这是日本训练的习惯,她完全没有从民族感情的角度来理解此刻隐藏在每一个中国人心中的愤怒. </P>
<P>　　当她今天面对辱骂,平静地回答如果她当初代表泰国队战胜中国,可能也就没人会骂她汉奸的时候,她根本就没有考虑她当初的抉择完全是出于一己私利,作为名人,她完全没有站在国家民族高度来对国民负责.大国要有大国的气量,但大国也有大国的尺度.她所言不假,如果当初她代表泰国参赛,就不会有今天这样的轰动效应,中国民众完全可以接受一个已经加入外国国籍的中国人在竞技体育中的优良表现,这就是大国的气量. </P>
<P>　　但日本自1945年战败以来,不仅没有象德国那样认真地反思他对中国犯下的滔天罪行,而且还试图从各方面摆脱和平宪法的束缚,以图东山再起,乱我中华.作为大国,我们可以超越历史恩怨去处理现实的中日关系,但绝对不能刀枪入库,马放南山.这里的马放南山,不仅仅是指军队建设的放松,更重要的是指思想的混乱和民族精神的废弃.中国自明清两代起,以"央央大国"自居,第一次鸦片战争失败割让香港岛,道光皇帝对于荒蛮之地的不足挂齿,足以体现大国的气量.但是当大国的气量缺乏了尺度,接二连三的赔款割地便蜂拥而来. </P>
<P>　　1900年八国联军攻占北京,慈禧太后"以中华之物力,结与国之欢心"的绝世谬论,将大国的气量推向了顶峰.当气量的包容已经大到敌我不分,思想混乱的时候,也就是中国再次走向衰落的前兆.小山智丽的错误,不在于她嫁给了一个日本人,也不在于她代表他国参与比赛,而是她作为名人,为了发泄在母国遭到的不公,高喊着"哟西"冲击了每一个中国人的心.我们可以换位思考,如果她加入美国国籍,完全可能会高喊着"OKAY"击败邓亚萍,或许我们不会责怪她很多.但她忽视了作为曾经是的中国人,面对一个曾经野蛮屠杀中国人并至今毫无诚意谢罪的国度,一种民族感情和民族尊严的捍卫.这也就是在精神层面上国家利益的捍卫.大国有海纳百川的气量,但大国也绝不能放弃国家利益这把尺度. </P>
<P>　　大国的确应该有大国的气量. 经济全球化,体育也在世界化,越来越多的中国运动员将会走出国门,代表其他国家参赛.每个人都有实现她自己价值的愿望和途径,我们无可非议,每一个中国人在海外的成功,其本身也是代表着以中国为主体的华人的成功.郎平带领的美国国家排球队可能会在2008年对阵中国,中国国际大师诸宸曾代表卡塔尔夺金摘冠,甚至更多的原中国乒乓球队员会代表其他国家或地区参赛. </P>
<P>　　我们不可否认对于这样的行为,网络上也有反对的声音,但我们更应该看到,正是因为我们的大国国民心态,和小山智丽事件这样的热点相比,上述的反对才显得是那么的脆弱.对于一个成熟的社会而言,完全没有反对是不可能的,但叶永烈先生绝对不能将这些反对和今天小山智丽热点的反对相提并论."商女不知亡国恨,隔江犹唱后庭花",杜牧的千古名句,时刻在警示着和平时期的人们,我们有忧患意识吗? 我们要反对极端民族主义,但不是抛弃民族主义,而是建立正确的国家民族观念,这是大国精神标尺上的刻度.日本如果能够象德国那样诚恳地道歉,即使在钓鱼岛上面为了争夺东海石油与中国存在严重的领土分岐,这只能是其国家利益的体现."搁置争议,共同开发",这就是大国的气量.但当日本面对屠杀事实,百般抵赖,拒绝认罪,那就超越了大国可以容忍的尺度.农夫和蛇的故事,时刻警惕着现代的中国.当你思想混乱,尺度失衡之时,也必定是你灭顶之灾之日. </P>
<P>　　赵薇的军旗装事件,杨丞琳事件,小山智丽事件,如果简单地将网络的批判归罪于民族主义,那就是对国民思想的极大混乱.我们提倡"百花齐放,百家争鸣",但纵观中国历史,每当盛世来临的时候,也就是各种思潮最丰富活跃的时候,但也正是最容易混乱人们思想的时候.宋明理学,明心见性.明末清初思想家顾炎武对明末的心学提出了深刻的批判,"君子为学,以明道也,以救世也.徒以诗文而已,所谓雕虫篆刻,亦何益哉?"叶永烈先生作为有一定影响的作家,面对网络的批判,以点及面,以部分过激网友的批评言辞来谴责全体国人的素质,并坦然回答"我经受过大风大浪",此乃非明道也.历朝历代,从中兴到衰亡,但最后重振中华,完成大一统的,是绵延不息的国家与民族精神.顾炎武先生的政治思想,特别是他的民族性,为后来晚清的资产阶级革命奠定了思想基础,他的浩然誓言,"天下兴亡,匹夫有责",亦是对中华文化5,000年历史主脉的总结.站在国家利益的高度,这正是作为一个大国所特有的精神财富. </P>
<P>　　大国要有大国的气量,今天我们可以接受小山智丽的回归,但是她必须为1994年广岛亚运会的"哟西"道歉."小山智丽现象",不是对许多运动员加入他国国籍参赛的这种现象的代名词,而是当每一个中国人在海外拼搏的时候,你有没有站在国家与民族的角度去判断可为与不可为的问题.我们可以理解小山智丽,赵薇和杨丞琳,她们太年轻.作为女孩,她们从不热衷于政治历史,但是作为名人,对国家与民族负责,这是他们最基本的素质.赵薇和杨丞琳,事后都发表了不同的道歉声明,虽然我们原谅了她们,但至少对她们的演艺事业,或多或少地产生一定地影响,这或许就是对她们的一个教训.我们没有制造强大的舆论压力,象韩国影星李恩珠因为演慰安妇而最终以自杀谢罪,这就是大国的气量,但绝不能让"识时务者为俊杰"这句古训,被披上虚伪的光环.否则,任何人都可能在有利于自己的时候,为识时务而背叛国家民族.要保持一定的舆论压力,让她们明白,什么是大国的尺度,你的错误是要付出一定代价的.这把尺,就掌握在每一个中国人手中.作为一个已经边缘化的人物,当今天热点再一次聚焦小山智丽的时候,是因为她至今还未道歉,这就超出了大国所能容忍的尺度.中国民众对她的责骂,绝不是属于狭隘民族主义的范畴. </P>
<P>　　中华文化渊源流长,她在文化,民族,宗教等方面所显示的多元性,足以体现大国的气量.正是因为大国的包容性,使岳飞和金兀术的后裔, 今天能够有机会坐在一起谈天论地,煮酒论史.以汉文化为基础,不断融和周边民族精髓而形成的中华文化,之所以一脉相承,正是因为以岳飞为代表的一大批仁人志士,历朝历代,精忠报国,打出了一个幅员辽阔,包容多元文化的今日之中国.没有民族精神这根主轴的大国,是不可能有气量去海纳百川,也必定早就化成散沙消失在历史的烟尘中."人生自古谁无死,留取丹心照汗青"的诗句,"天下兴亡,匹夫有责"的誓言,更多地体现为一种精神.在抗日战争中,杨靖宇失败了,狼牙山五壮士跳崖了,但日本人对他们的崇敬高于投降的伪军,这就是民族精神.宋末文天祥和明末顾炎武所代表的朝代终因腐败而结束了统治,但中华文化之所以在元清统治时依然得以延续和传承,除了农耕文化的时代先进性,也正是以他们为代表的忠义之国家民族精神,使元清统治者在拓展生存空间的战争中为之颤动,并最终选择了融入中华文化的脉络. </P>
<P>　　随着东亚一体化的进程,以汉文化为主体的中华文化,与高丽文化和日本大和文化必将会再次发生激烈的碰撞.但相比欧洲一体化,起源于同一儒家文明的三国文化将更具有融和的趋势,无论在感情上,现代的三国民众是否认同,但历史的演绎完全可能出乎我们这代人的想象.东亚一体化的进程不容阻挡,在他的前面,或许还有战争,但正是因为他的坦坷不平,我们不能乐观地为了这个进程而放弃民族精神.纵观历史,自古中华民族的融和与中华文化的继承,无论哪个异族统治中国,正是在这种抵抗与捍卫的精神中得以延续,并创造了今天大一统中国的多元文化的格局.战争是为了和平,没有对战争的准备根本不可能获得和平. </P>
<P>　　同样,没有民族精神的东亚一体化,将是对中华文化捍卫的缺憾.东亚一体化或许将来会表达为包容高丽文化或大和文化的一体化,但如果没有我们今天所坚持的民族精神,以大国包容性为基础的中华文化,也将失去继往开来的基础."小山智丽"的争议,可以预见在不远的将来,将会和"施琅将军"一样,随着东亚一体化的进程,步入历史永远的争议.但我们必须看到这条主线,施琅将军收复台湾,纯粹是历史的巧合,无论过去,现在还是将来,历史终将不会给他正面的评价.永不道歉的小山智丽,可以预见在永远的将来,将会永远地被历史所非议,因为在她身上,是国家民族利益在精神层面上捍卫的缺失. </P>
<P>　　历史是发展的,无论东亚一体化进程如何,无论未来国家民族融合的趋势如何,但永恒不变的永远是国家民族精神,只是国家与民族定义的范围和广度的差异.这是国家利益在精神层面的捍卫,这也就是一把衡量大国气量的尺度. </P>
<P>　　先天下之忧而优,后天下之乐而乐! </P>
<P>　　张旭/ 美国得克萨斯州</P>]]></description>
</item><item>
<title><![CDATA[xp系统，自动复制选中文字到剪贴板]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=NaddyLee&amp;id=23071</link>
<author>NaddyLee</author>
<pubDate>2007/3/7 10:29:03</pubDate>
<description><![CDATA[遇到一个问题：选中一段文字，系统有时会把它自动复制到剪贴板，覆盖原来剪贴板的内容，特别是在一些文本编辑器中。谁遇到过同样的问题？]]></description>
</item><item>
<title><![CDATA[Mysql 的 java.io.EOFException]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=NaddyLee&amp;id=18795</link>
<author>NaddyLee</author>
<pubDate>2006/9/27 12:56:02</pubDate>
<description><![CDATA[数据库换用mysql后，jboss在每天早上都要重启，查看后台，错误如下：
<P>&nbsp;com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: </P>
<P>** BEGIN NESTED EXCEPTION ** </P>
<P>java.io.EOFException</P>
<P>STACKTRACE:</P>
<P>java.io.EOFException<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.Connection.execSQL(Connection.java:3118)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5215)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.checkTransaction(BaseWrapperManagedConnection.java:425)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resource.adapter.jdbc.WrappedConnection.checkTransaction(WrappedConnection.java:766)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resource.adapter.jdbc.WrappedConnection.prepareStatement(WrappedConnection.java:214)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:497)</P>
<P>……</P>
<P>&nbsp;这个问题是由于连接池中的连接失效引起的。</P>
<P>&nbsp;在 MySQL 的默认设置中，空闲超过 8 小时的连接会被自动关闭(interactive_timeout=28800,wait_timeout=28800)。</P>
<P>当连接池没有销毁掉空闲时间超过设置的连接，这些连接会因为已被数据库关闭而导致失效。<BR>&nbsp;&nbsp;&nbsp;&nbsp;在原来的数据库连接池设置中，idle-timeout-minutes 的值设置为0（不销毁空闲连接），因此出现了在每天早上（空闲超过 8 小时），连接失效的情况。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在 Tomcat 的 Realm 设置中，有时也会出现这种情况（Realm 中没有设置 idle-timeout）。解决的方法是升级到 Tomcat 5.5.9 以上版本，并将 JDBCRealm 改为 DataSourceRealm。&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还有一种情况 <A href="http://bugs.mysql.com/bug.php?id=14279">http://bugs.mysql.com/bug.php?id=14279</A>&nbsp;是在使用 XAConnections 的时候出现。是因为 mysql 的 JDBC 驱动在清理连接时，没有检查是否 XA 的 connection 就直接调用 rollback 引起的。出现这个问题的驱动是：mysql-connector-java-5.0-nightly-2005102。这个缺陷报告的状态已被设为关闭（已修复？）。</P>]]></description>
</item><item>
<title><![CDATA[Mysql 使用 text 字段时需要指定驱动的字符集]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=NaddyLee&amp;id=18587</link>
<author>NaddyLee</author>
<pubDate>2006/9/21 17:48:28</pubDate>
<description><![CDATA[<P>对于 mysql&nbsp;的 JDBC&nbsp;驱动，在使用 Text 类型时，需要指定驱动使用的字符集，如下例：<BR>jdbc:mysql://localhost/test?characterEncoding=UTF-8 </P>
<P>否则有可能插入失败。可变长字段则没有这样的问题。</P>]]></description>
</item><item>
<title><![CDATA[执行 Ant  时的问题]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=NaddyLee&amp;id=16017</link>
<author>NaddyLee</author>
<pubDate>2006/6/29 16:10:49</pubDate>
<description><![CDATA[今天要将一个应用换到另一台服务器。代码转移过去后，在进行编译时，出现了问题： 在 ant compile 时，出了一个 Buildfile：build.xml ，后面就死活没有东西了。也无法退出。无奈之下，在 compile 里面加了一些 echo，想看看执行到哪一行了。谁知，这次却 build successful。这到底是什么原因？]]></description>
</item><item>
<title><![CDATA[Struts 的 html 标签 和 el 语法对map值的引用]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=NaddyLee&amp;id=13838</link>
<author>NaddyLee</author>
<pubDate>2006/4/26 11:08:19</pubDate>
<description><![CDATA[用法： 
<P>&lt;html:text property="valuesMap(${attrDef.key})" value="${subAttr.valuesMap[attrDef.key]}" size="80"/&gt;</P>
<P><STRONG>EL 中：</STRONG><BR>expr-a.identifier-b&nbsp;等价于 expr-a["identifier-b"]<BR>expr-a[expr-b]的情况下：<BR>先对 expr-a 求值为 value-a，对 expr-b 求值为 value-b;</P>
<P>然后：<BR>当&nbsp;value-a 或 value-b = null，返回null；<BR>当 value-a 是一个Map，返回 value-a.get(value-b) 或 null;<BR>当 value-a 是 数组 或 List，强制转换&nbsp;value-b 到 int，返回 value-a.get(value-b) 或 <FONT face=新宋体>Array.get(value-a, value-b);<BR>当 value-a 是 javabean，强制转换 value-b 到 String，若 value-b 属性可读，返回 get 方法的返回值（value-a.getValue-b())，如果get方法抛出异常，返回一个错误</FONT><BR></P>
<P><STRONG>Struts中的<BR>Map_Backed ActionForm：<BR><BR></STRONG>public FooForm extends ActionForm {<BR><BR>&nbsp;&nbsp;&nbsp; private final Map values = new HashMap();<BR><BR>&nbsp;&nbsp;&nbsp; public void setValue(String key, Object value) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; values.put(key, value);<BR>&nbsp;&nbsp;&nbsp; }<BR><BR>&nbsp;&nbsp;&nbsp; public Object getValue(String key) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return values.get(key);<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>引用语法：<FONT face=新宋体>mapname(keyname)<BR>例子：<BR>&lt;html:text property="value(foo)"/&gt;&nbsp;&nbsp;&nbsp;&nbsp; ： getValue("foo")<BR><BR>name = "value(foo-1)";<BR></FONT>&lt;html:text property="&lt;%= name %&gt;"/&gt;&nbsp;&nbsp;&nbsp; ： getValue("foo-1")<BR><BR><STRONG>list_backed properties:</STRONG><BR>public FooForm extends ActionForm {<BR><BR>&nbsp;&nbsp;&nbsp; private final <STRONG>List</STRONG> values = new ArrayList();<BR><BR>&nbsp;&nbsp;&nbsp; public void setValue(int key, Object value) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; values.set(key, value);<BR>&nbsp;&nbsp;&nbsp; }<BR><BR>&nbsp;&nbsp;&nbsp; public Object getValue(int key) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return values.get(key);<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>引用语法：<FONT face=新宋体>listname[index]</FONT><BR><BR>附：<BR><BR><A href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html" target=blank><STRONG>EL</STRONG></A>：<A href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html">http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html</A><BR><BR>The JSP expression language unifies the treatment of the <CODE class=cCode>.</CODE> and <CODE class=cCode>[]</CODE> operators. <CODE class=cCode>expr-a.identifier-b</CODE> is equivalent to expr-<CODE class=cCode>a["identifier-b"]</CODE>; that is, the expression <CODE class=cCode>expr-b</CODE> is used to construct a literal whose value is the identifier, and then the <CODE class=cCode>[]</CODE> operator is used with that value. </P><A name=wp76693></A>
<P class=pBody>To evaluate <CODE class=cCode>expr-a[expr-b]</CODE>, evaluate <CODE class=cCode>expr-a</CODE> into <CODE class=cCode>value-a</CODE> and evaluate <CODE class=cCode>expr-b</CODE> into <CODE class=cCode>value-b</CODE>. If either <CODE class=cCode>value-a</CODE> or <CODE class=cCode>value-b</CODE> is null, return <CODE class=cCode>null</CODE>. </P>
<DIV class=pSmartList1>
<UL class=pSmartList1><A name=wp71038></A>
<DIV class=pSmartList1>
<LI>If <CODE class=cCode>value-a</CODE> is a <CODE class=cCode>Map</CODE>, return <CODE class=cCode>value-a.get(value-b)</CODE>. If <CODE class=cCode>!value-a.containsKey(value-b)</CODE>, then return <CODE class=cCode>null</CODE>.</LI></DIV><A name=wp71039></A>
<DIV class=pSmartList1>
<LI>If <CODE class=cCode>value-a</CODE> is a <CODE class=cCode>List</CODE> or array, coerce <CODE class=cCode>value-b</CODE> to <CODE class=cCode>int</CODE> and return <CODE class=cCode>value-a.get(value-b)</CODE> or <CODE class=cCode>Array.get(value-a, value-b)</CODE>, as appropriate. If the coercion couldn't be performed, an error is returned. If the <CODE class=cCode>get</CODE> call returns an <CODE class=cCode>IndexOutOfBoundsException</CODE>, <CODE class=cCode>null</CODE> is returned. If the <CODE class=cCode>get</CODE> call returns another exception, an error is returned.</LI></DIV><A name=wp71040></A>
<DIV class=pSmartList1>
<LI>If <CODE class=cCode>value-a</CODE> is a JavaBeans object, coerce <CODE class=cCode>value-b</CODE> to <CODE class=cCode>String</CODE>. If <CODE class=cCode>value-b</CODE> is a readable property of <CODE class=cCode>value-a</CODE>, then return the result of a <CODE class=cCode>get</CODE> call. If the <CODE class=cCode>get</CODE> method throws an exception, an error is returned.</LI></DIV></UL></DIV>
<P><STRONG>struts中，对map值的引用使用圆括号，如上文的valuesMap(***)；</STRONG><BR></P>
<H2 id=map_action_form_classes>Map-backed ActionForms</H2>
<DIV class=indent>
<P>The DynaActionForm classes offer the ability to create ActionForm beans at initialization time, based on a list of properties enumerated in the Struts configuration file. However, many HTML forms are generated dynamically at request time. Since the properties of these forms' ActionForm beans are not all known ahead of time, we need a new approach. </P>
<P>Struts allows you to make one or more of your ActionForm's properties' values a Map instead of a traditional atomic object. You can then store the data from your form's dynamic fields in that Map. Here is an example of a map-backed ActionForm class: </P><PRE><CODE>public FooForm extends ActionForm {

    private final Map values = new HashMap();

    public void setValue(String key, Object value) {
        values.put(key, value);
    }

    public Object getValue(String key) {
        return values.get(key);
    }

}
</CODE>
</PRE>
<P>In its corresponding JSP page, you can access objects stored in the values map using a special notation: <CODE>mapname(keyname)</CODE>. The parentheses in the bean property name indicate that: </P>
<UL>
<LI>The bean property named <CODE>mapname</CODE> is indexed using Strings (probably backed by a Map), and that 
<LI>Struts should look for get/set methods that take a String key parameter to find the correct sub-property value. Struts will, of course, use the <CODE>keyname</CODE> value from the parentheses when it calls the get/set methods. </LI></UL>
<P>Here is a simple example: </P><PRE><CODE>&lt;html:text property="value(foo)"/&gt;</CODE>
</PRE>
<P>This will call the <CODE>getValue</CODE> method on FooForm with a key value of "<CODE>foo</CODE>" to find the property value. To create a form with dynamic field names, you could do the following: </P><PRE><CODE>
&lt;% 
	for (int i = 0; i &lt; 10; i++) {
		String name = "value(foo-" + i + ")";
%&gt;
		&lt;html:text property="&lt;%= name %&gt;"/&gt;
		&lt;br/&gt;
&lt;%
	}
%&gt;
</CODE>
</PRE>
<P>Note that there is nothing special about the name <CODE>value</CODE>. Your map-backed property could instead be named <CODE>property</CODE>, <CODE>thingy</CODE>, or any other bean property name you prefer. You can even have multiple map-backed properties on the same bean. </P>
<P>In addition to map-backed properties, you can also create list-backed properties. You do so by creating indexed get/set methods on your bean: </P><PRE><CODE>public FooForm extends ActionForm {

    private final List values = new ArrayList();

    public void setValue(int key, Object value) {
        values.set(key, value);
    }

    public Object getValue(int key) {
        return values.get(key);
    }
}
</CODE>
</PRE>
<P>In your presentation pages, you access individual entries in a list-backed property by using a different special notation: <CODE>listname[index]</CODE>. The braces in the bean property name indicate that the bean property named <CODE>listname</CODE> is indexed (probably backed by a List), and that Struts should look for get/set methods that take an index parameter in order to find the correct sub-property value. </P>
<P>While map-backed ActionForms provide you with more flexibility, they do not support the same range of syntax available to conventional or DynaActionForms. You might have difficulty referencing <A href="http://rnd2.dcampus.com:8081/struts-documentation/faqs/indexedprops.html">indexed or mapped properties</A> using a map-backed ActionForm. The <CODE>validwhen</CODE> validator (since Struts 1.2.1) also does not support map-backed ActionForms.<BR><BR></P></DIV>]]></description>
</item>
</channel>
</rss>