﻿<?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-Deepbluesea's Bookroom-随笔分类-JS</title><link>http://www.blogjava.net/deepbluesea/category/31945.html</link><description>Let's Go!</description><language>zh-cn</language><lastBuildDate>Tue, 16 Dec 2008 09:45:09 GMT</lastBuildDate><pubDate>Tue, 16 Dec 2008 09:45:09 GMT</pubDate><ttl>60</ttl><item><title>js 向action 传长参数</title><link>http://www.blogjava.net/deepbluesea/archive/2008/12/16/246641.html</link><dc:creator>deepbluesea</dc:creator><author>deepbluesea</author><pubDate>Tue, 16 Dec 2008 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/deepbluesea/archive/2008/12/16/246641.html</guid><wfw:comment>http://www.blogjava.net/deepbluesea/comments/246641.html</wfw:comment><comments>http://www.blogjava.net/deepbluesea/archive/2008/12/16/246641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/deepbluesea/comments/commentRss/246641.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/deepbluesea/services/trackbacks/246641.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;openWindowWithPost(url,name,keys,values)<br />
<img id="Codehighlighter1_50_610_Open_Image" onclick="this.style.display='none'; Codehighlighter1_50_610_Open_Text.style.display='none'; Codehighlighter1_50_610_Closed_Image.style.display='inline'; Codehighlighter1_50_610_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_50_610_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_50_610_Closed_Text.style.display='none'; Codehighlighter1_50_610_Open_Image.style.display='inline'; Codehighlighter1_50_610_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_50_610_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_50_610_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;newWindow&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;window.open(url,&nbsp;name);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">newWindow)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;html&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />html&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;form&nbsp;id='formid'&nbsp;method='post'&nbsp;action='</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;url&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">'&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(keys&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;values&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;(keys.length&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;values.length))<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;keys.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_318_439_Open_Image" onclick="this.style.display='none'; Codehighlighter1_318_439_Open_Text.style.display='none'; Codehighlighter1_318_439_Closed_Image.style.display='inline'; Codehighlighter1_318_439_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_318_439_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_318_439_Closed_Text.style.display='none'; Codehighlighter1_318_439_Open_Image.style.display='inline'; Codehighlighter1_318_439_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_318_439_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_318_439_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">alert(keys[i]+"="+values[i]);</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">html&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;input&nbsp;type='hidden'&nbsp;name='</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;keys[i]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">'&nbsp;value=\</span><span style="color: #000000">""</span><span style="color: #000000">&nbsp;+&nbsp;values[i]&nbsp;+&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />html&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/form&gt;&lt;script&nbsp;type='text/javascript'&gt;document.getElementById(\</span><span style="color: #000000">"</span><span style="color: #000000">formid\</span><span style="color: #000000">"</span><span style="color: #000000">).submit()&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />newWindow.document.write(html);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;newWindow;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<img src ="http://www.blogjava.net/deepbluesea/aggbug/246641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/deepbluesea/" target="_blank">deepbluesea</a> 2008-12-16 15:49 <a href="http://www.blogjava.net/deepbluesea/archive/2008/12/16/246641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>采用dwr ajax和struts开发文件上传进度条</title><link>http://www.blogjava.net/deepbluesea/archive/2008/10/24/236389.html</link><dc:creator>deepbluesea</dc:creator><author>deepbluesea</author><pubDate>Fri, 24 Oct 2008 06:00:00 GMT</pubDate><guid>http://www.blogjava.net/deepbluesea/archive/2008/10/24/236389.html</guid><wfw:comment>http://www.blogjava.net/deepbluesea/comments/236389.html</wfw:comment><comments>http://www.blogjava.net/deepbluesea/archive/2008/10/24/236389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/deepbluesea/comments/commentRss/236389.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/deepbluesea/services/trackbacks/236389.html</trackback:ping><description><![CDATA[<span style="color: red"><span style="color: #000000"><strong><font size="2">编写监听器以及相关的类</font></strong> <br />
</span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">不用自己写了，源码可以从</font> </span></span></p>
<p align="left"><a href="http://www.telio.be/blog/2006/01/06/ajax-upload-progress-monitor-for-commons-fileupload-example"><span style="color: red"><span style="color: #000000">http://www.telio.be/blog/2006/01/06/ajax-upload-progress-monitor-for-commons-fileupload-example</span></span></a><span style="color: red"><span style="color: #000000"><font size="2">里面下载，</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000">下载地址</span></span></p>
<p align="left"><a href="http://www.telio.be/blog/wp-content/uploads/2006/01/ajax-upload-1.0.war"><span style="color: red"><span style="color: #000000">http://www.telio.be/blog/wp-content/uploads/2006/01/ajax-upload-1.0.war</span></span></a><br />
<br />
</p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">下载完之后，你需要解包，在命令行中：</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">jar xvf ajax-upload-1.0.war</font> <br />
<font size="2">源码就在\WEB-INF\src下面</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">将要用到的文件有resources文件夹下，\WEB-INF\下面的dwr.xml和lib下面的jar文件</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><strong><font size="2">上传页面</font></strong> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">在上面解开的包里面有index.jsp这个是上传页面，upload.jsp负责上传，resources包里面包含了dwr与服务器通讯的javascript脚本，你需要把index.jsp的form中的action换成你的struts action即可，然后把form中的file名改成你actionform中的file属性名，把页面中剩余的file去掉</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">index.jsp上传页面示例代码：</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;%@ page contentType="text/html; charset=gb2312" language="java"</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">import="java.util.*" errorPage=""%&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;%</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">String path=request.getContextPath();</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">%&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;html locale="true"&gt;</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;head&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;SCRIPT language=javascript&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">function check_file() {</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">var strFileName=document.forms(0).file;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">if (strFileName.value==""){</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">alert("请选择要上传的文件");</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">return false;</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">startProgress();</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000">function loadmessage(){ </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;%</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>if</strong> (request.getAttribute("message") != <strong>null</strong>) {</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000">%&gt; </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">window.alert("&lt;%=request.getAttribute("message")%&gt;");</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">window.returnValue="yes";</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;%}%&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/SCRIPT&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;title&gt;上传&lt;/title&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;script src='&lt;%=path%&gt;/resources/js/upload.js'&gt; &lt;/script&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;script src='&lt;%=path%&gt;/dwr/interface/UploadMonitor.js'&gt; &lt;/script&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;script src='&lt;%=path%&gt;/dwr/engine.js'&gt; &lt;/script&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;script src='&lt;%=path%&gt;/dwr/util.js'&gt; &lt;/script&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="loadmessage()"&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;form name="form" method="post" action="&lt;%=path%&gt;/upload.do?method=upload" enctype="multipart/form-data" onSubmit="return check_file()"&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;table width="60%" border="0" cellspacing="1"&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;tr background-color=" #E7F5FE"&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;td width="30%" align="right"&gt;从文件导入：&lt;/td&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;td width="51%"&gt;&lt;input type="file" name="file" class="input"&gt;&lt;/td&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;td width="27%"&gt;&lt;input type="submit" name="files" class="button_4"</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">style="border-style:None;width:71px;" value="确定" id="uploadbutton"&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/td&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/tr&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;tr align="left" background-color=" #E7F5FE"&gt;</font> </span></span>
<p class="Eqa509"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;td colspan="3"&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;div id="progressBar" style="display: none;"&gt;</font> </span></span>
<p class="Eqa509"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;div id="theMeter"&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;div id="progressBarText"&gt;&lt;/div&gt;</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;div id="progressBarBox"&gt;</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;div id="progressBarBoxContent"&gt;&lt;/div&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/div&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/div&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/div&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/td&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/tr&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/table&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/form&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/body&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/html&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">并且要修改一下\resources\js中的upload.js文件：</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">function refreshProgress()</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">{</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">UploadMonitor.getUploadInfo(updateProgress);</font>&nbsp; </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span></p>
<p align="left"><font size="2"></font><span style="color: red"><span style="color: #000000"><font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">function updateProgress(uploadInfo)</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">{</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">if (uploadInfo.inProgress)</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">{</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">document.getElementById('uploadbutton').disabled = true;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">document.getElementById('file').disabled = true;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">var fileIndex = uploadInfo.fileIndex;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">var progressPercent = Math.ceil((uploadInfo.bytesRead / uploadInfo.totalSize) * 100);</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">document.getElementById('progressBarText').innerHTML = '文件读取进度: ' progressPercent '%';</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">document.getElementById('progressBarBoxContent').style.width = parseInt(progressPercent * 3.5) 'px';</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">window.setTimeout('refreshProgress()', 1000);</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">else</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">{</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">document.getElementById('uploadbutton').disabled = false;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">document.getElementById('file').disabled = false;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">return true;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">function startProgress()</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">{</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">document.getElementById('progressBar').style.display = 'block';</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">document.getElementById('progressBarText').innerHTML = '文件读取进度: 0%';</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">document.getElementById('uploadbutton').disabled = true;</font> </span></span>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">// wait a little while to make sure the upload has started ..</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">window.setTimeout("refreshProgress()", 1000);</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">return true;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>配置</strong><strong>dwr.xml</strong></font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">放在/WEB-INF/下面</font> </span></span>
<p class="Alz513"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;dwr&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;allow&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;create creator="new" javascript="UploadMonitor"&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;param name="class" value="be.telio.mediastore.ui.upload.UploadMonitor"/&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/create&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;convert converter="bean" match="be.telio.mediastore.ui.upload.UploadInfo"/&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/allow&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/dwr&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>web.xml</strong><strong>中配置</strong><strong>dwr</strong>，省略spring，struts等的配置</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><font size="2"><span style="color: red"><span style="color: #000000">&lt;servlet&gt; </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;display-name&gt;DWR Servlet&lt;/display-name&gt;</font> </span></span>
<p class="Sey479"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt;</font> </span></span>
<p class="Sey479"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;init-param&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;param-name&gt;debug&lt;/param-name&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;param-value&gt;false&lt;/param-value&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/init-param&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;init-param&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;param-name&gt;logLevel&lt;/param-name&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;param-value&gt;WARN&lt;/param-value&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/init-param&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/servlet&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;servlet-mapping&gt;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;</font>&nbsp; </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;</font>&nbsp; </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/servlet-mapping&gt;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>编写</strong><strong>struts</strong><strong>的</strong><strong>MultipartRequestHandler</strong> ：AjaxMultipartRequestHandler</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">实现 MultipartRequestHandler接口并在struts-config.xml的controller中替换默认的multipartClass</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;controller&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;set-property property="multipartClass"</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">value="org.springside.components.ajaxupload.AjaxMultipartRequestHandler" /&gt;</font> </span></span>
<p class="Sey479"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">&lt;/controller&gt;</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">其实这个类AjaxMultipartRequestHandler编写很简单，把struts的src源码中的org.apache.struts.upload.CommonsMultipartRequestHandler.java修改一下就可以了<strong>：</strong></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">在<strong>public</strong> <strong>void</strong> handleRequest(HttpServletRequest request)</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>throws</strong> ServletException {</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">方法中把定义factory之前的那几行代码注释掉然后写入</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">UploadListener listener = <strong>new</strong> UploadListener(request, 30);</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">FileItemFactory factory = <strong>new</strong> MonitoredDiskFileItemFactory(<u>listener</u>);</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">之后再注释掉</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">// upload.setSizeThreshold((int) getSizeThreshold(ac));</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">// upload.setRepositoryPath(getRepositoryPath(ac));</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">这个类就算写完了</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>编写</strong><strong>struts</strong><strong>上传类</strong></font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">就用你原来编写的struts上传类</font> <br />
<font size="2">上传方法代码段示例：</font> </span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">/**</font> </span></span>
<p class="Sey479"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">* 上传文件</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">*/</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>public</strong> ActionForward upload(ActionMapping mapping, ActionForm form,</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">HttpServletRequest request, HttpServletResponse response)</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>throws</strong> Exception {</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">String path = getServlet().getServletContext().getRealPath("/");</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><em>log</em>.info("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;path:" path);</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>if</strong> (form == <strong>null</strong>) {</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><font size="2"><span style="color: red"><span style="color: #000000"><strong>return</strong> mapping.findForward("success"); </span></span></p>
</font>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">FileUploadForm fuf = (FileUploadForm) form;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">FormFile file = fuf.getFile();</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>try</strong> {</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>if</strong> (file == <strong>null</strong>) {</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><em>log</em>.info("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;file为空");</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>return</strong> mapping.findForward("success");</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">} <strong>catch</strong> (Exception e) {</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">e.printStackTrace();</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">String fname = file.getFileName();</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>int</strong> t = 0;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>for</strong> (<strong>int</strong> i = 0; i &lt; fname.length(); i ) {</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>if</strong> (fname.charAt(i) == '.') {</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">t = i;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> <font size="2">}</font> </span></span></p>
<p class="Upl547"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">String filename = <strong>null</strong>;</font> <br />
<font size="2"><strong>if</strong> (t &gt; 0) {</font> </span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">filename = fname.substring(0, t);</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><em>log</em>.info("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;文件名：" filename);</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">String filepath = path "dataimport/upfiles/" fname;</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">File f = <strong>new</strong> File(path "dataimport/upfiles/");</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><em>log</em>.info("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;文件生成路径：" filepath);</font> <br />
<font size="2"><strong>if</strong> (!f.exists()) {</font> </span></span></p>
<p class="Upl547"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">f.mkdirs();</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">} <strong>else</strong> {</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><em>log</em>.info("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;路径存在");</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span>
<p class="Upl547"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">InputStream stream = file.getInputStream();</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">OutputStream os = <strong>new</strong> FileOutputStream(path "dataimport/upfiles/"</font> </span></span>
<p class="Upl547"><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">fname);</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>int</strong> readBytes = 0;</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>byte</strong> buffer[] = <strong>new</strong> <strong>byte</strong>[8192];</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>while</strong> ((readBytes = stream.read(buffer, 0, 8192)) != -1) {</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">os.write(buffer, 0, readBytes);</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> <font color="#ffffff"></font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">os.close();</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">stream.close();</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">file.destroy();</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000">&nbsp; </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">String message = "成功！";</font> </span></span>
<p><span style="color: red"><span style="color: #000000">&nbsp;</span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">request.setAttribute("message", message);</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2"><strong>return</strong> <u>mapping</u>.findForward("success");</font> </span></span></p>
<p align="left"><span style="color: red"><span style="color: #000000"><font size="2">}</font> </span></span></p>
</font><img src ="http://www.blogjava.net/deepbluesea/aggbug/236389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/deepbluesea/" target="_blank">deepbluesea</a> 2008-10-24 14:00 <a href="http://www.blogjava.net/deepbluesea/archive/2008/10/24/236389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dwr 学习笔记1</title><link>http://www.blogjava.net/deepbluesea/archive/2008/10/15/234547.html</link><dc:creator>deepbluesea</dc:creator><author>deepbluesea</author><pubDate>Wed, 15 Oct 2008 15:18:00 GMT</pubDate><guid>http://www.blogjava.net/deepbluesea/archive/2008/10/15/234547.html</guid><wfw:comment>http://www.blogjava.net/deepbluesea/comments/234547.html</wfw:comment><comments>http://www.blogjava.net/deepbluesea/archive/2008/10/15/234547.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/deepbluesea/comments/commentRss/234547.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/deepbluesea/services/trackbacks/234547.html</trackback:ping><description><![CDATA[<p>简单例子：</p>
<div id="sourceDiv" style="display: block">
<h2>HTML source:</h2>
<pre>&lt;p&gt;
Name:
&lt;input type="text" id="demoName"/&gt;
&lt;input value="Send" type="button" onclick="update()"/&gt;
&lt;br/&gt;
Reply: &lt;span id="demoReply"&gt;&lt;/span&gt;
&lt;/p&gt;
</pre>
<h2>Javascript source:</h2>
<pre>function update() {
var name = dwr.util.getValue("demoName");
Demo.sayHello(name, function(data) {
dwr.util.setValue("demoReply", data);
});
}
</pre>
<h2>Java source:</h2>
<pre>package org.getahead.dwrdemo.simpletext;
public class Demo {
public String sayHello(String name) {
return "Hello, " + name;
}
}
</pre>
<h2>dwr.xml</h2>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd"&gt;
&lt;dwr&gt;
&lt;allow&gt;
&lt;create creator="new" javascript="Demo"&gt;
&lt;param name="class" value="org.getahead.dwrdemo.simpletext.Demo"/&gt;
&lt;/create&gt;
&lt;/allow&gt;
&lt;/dwr&gt;</pre>
</div>
<pre>其他配置：</pre>
<pre> 1   web.xml: </pre>
<pre>
<p>&nbsp;&lt;listener&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;listener-class&gt;org.directwebremoting.servlet.EfficientShutdownServletContextAttributeListener&lt;/listener-class&gt;<br />
&nbsp; &lt;/listener&gt;<br />
&nbsp; &lt;listener&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;listener-class&gt;org.directwebremoting.servlet.EfficientShutdownServletContextListener&lt;/listener-class&gt;<br />
&nbsp; &lt;/listener&gt;<br />
&nbsp; <br />
&nbsp; <br />
&nbsp;&nbsp; &lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.directwebremoting.servlet.DwrServlet&lt;/servlet-class&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;!-- This should NEVER be present in live --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;debug&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;true&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;!-- Remove this unless you want to use active reverse ajax --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;activeReverseAjaxEnabled&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;true&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;!-- By default DWR creates application scope objects when they are first<br />
&nbsp;&nbsp;&nbsp; used. This creates them when the app-server is started --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;initApplicationScopeCreatorsAtStartup&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;true&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;!-- This enables full streaming mode. It's probably better to leave this<br />
&nbsp;&nbsp;&nbsp; out if you are running across the internet --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;maxWaitAfterWrite&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;-1&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;!--<br />
&nbsp;&nbsp;&nbsp; For more information on these parameters, see:<br />
&nbsp;&nbsp;&nbsp; - http://getahead.org/dwr/server/servlet<br />
&nbsp;&nbsp;&nbsp; - http://getahead.org/dwr/reverse-ajax/configuration<br />
&nbsp;&nbsp;&nbsp; --&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />
&nbsp; &lt;/servlet&gt;</p>
<p>&nbsp; &lt;servlet-mapping&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;<br />
&nbsp; &lt;/servlet-mapping&gt;</p>
2   js文件引入，因为我页面代码放在了index.jsp里面。所以引入js的代码如下：</pre>
<pre>  &lt;script type='text/javascript' src='./tabs/tabs.js'&gt; &lt;/script&gt;<br />
&nbsp; &lt;script type='text/javascript' src='./dwr/engine.js'&gt; &lt;/script&gt;<br />
&nbsp; &lt;script type='text/javascript' src='./dwr/util.js'&gt; &lt;/script&gt;<br />
&nbsp; &lt;script type='text/javascript' src='./dwr/interface/Demo.js'&gt; &lt;/script&gt;</pre>
<pre>  应该建立一个项目路径。在所有文件里使用统一的路径。</pre>
<img src ="http://www.blogjava.net/deepbluesea/aggbug/234547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/deepbluesea/" target="_blank">deepbluesea</a> 2008-10-15 23:18 <a href="http://www.blogjava.net/deepbluesea/archive/2008/10/15/234547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java应用：编写高级JavaScript应用代码 </title><link>http://www.blogjava.net/deepbluesea/archive/2008/09/02/226286.html</link><dc:creator>deepbluesea</dc:creator><author>deepbluesea</author><pubDate>Tue, 02 Sep 2008 02:35:00 GMT</pubDate><guid>http://www.blogjava.net/deepbluesea/archive/2008/09/02/226286.html</guid><wfw:comment>http://www.blogjava.net/deepbluesea/comments/226286.html</wfw:comment><comments>http://www.blogjava.net/deepbluesea/archive/2008/09/02/226286.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/deepbluesea/comments/commentRss/226286.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/deepbluesea/services/trackbacks/226286.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">1、创建高级对象
<p style="text-indent: 2em">使用构造函数来创建对象
<p style="text-indent: 2em">构造函数是一个函数，调用它来例示并初始化特殊类型的对象。可以使用 new 关键字来调用一个构造函数。下面给出了使用构造函数的新示例。
<p style="text-indent: 2em">
<p style="text-indent: 2em">var myObject = new Object(); // 创建没有属性的通用对象。
<p style="text-indent: 2em">var myBirthday = new Date(1961, 5, 10); // 创建一个 Date 对象。
<p style="text-indent: 2em">var myCar = new Car(); // 创建一个用户定义的对象，并初始化其属性。
<p style="text-indent: 2em">通过构造函数将一个参数作为特定的 this 关键字的值传递给新创建的空对象。然后构造函数负责为新对象执行适应的初始化（创建属性并给出其初始值）。完成后，构造函数返回它所构造的对象的一个参数。
<p style="text-indent: 2em">
<p style="text-indent: 2em">编写构造函数
<p style="text-indent: 2em">可以使用 new 运算符结合像 Object()、Date() 和 Function() 这样的预定义的构造函数来创建对象并对其初始化。面向对象的编程其强有力的特征是定义自定义构造函数以创建脚本中使用的自定义对象的能力。创建了自定义的构造函数，这样就可以创建具有已定义属性的对象。下面是自定义函数的示例（注意 this 关键字的使用）。
<p style="text-indent: 2em">
<p style="text-indent: 2em">function Circle (xPoint, yPoint, radius) {
<p style="text-indent: 2em">this.x = xPoint; // 圆心的 x 坐标。
<p style="text-indent: 2em">this.y = yPoint; // 圆心的 y 坐标。
<p style="text-indent: 2em">this.r = radius; // 圆的半径。
<p style="text-indent: 2em">}
<p style="text-indent: 2em">调用 Circle 构造函数时，给出圆心点的值和圆的半径（所有这些元素是完全定义一个独特的圆对象所必需的）。结束时 Circle 对象包含三个属性。下面是如何例示 Circle 对象。
<p style="text-indent: 2em">
<p style="text-indent: 2em">var aCircle = new Circle(5, 11, 99);
<p style="text-indent: 2em">使用原型来创建对象
<p style="text-indent: 2em">在编写构造函数时，可以使用原型对象（它本身是所有构造函数的一个属性）的属性来创建继承属性和共享方法。原型属性和方法将按引用复制给类中的每个对象，因此它们都具有相同的值。可以在一个对象中　更改原型属性的值，新的值将覆盖默认值，但仅在该实例中有效。属于这个类的其他对象不受此更改的影响。下面给出了使用自定义构造函数的示例，Circle（注意 this 关键字的使用）。
<p style="text-indent: 2em">
<p style="text-indent: 2em">Circle.prototype.pi = Math.PI;
<p style="text-indent: 2em">function ACirclesArea () {
<p style="text-indent: 2em">return this.pi * this.r * this.r; // 计算圆面积的公式为 ?r2。
<p style="text-indent: 2em">}
<p style="text-indent: 2em">Circle.prototype.area = ACirclesArea; // 计算圆面积的函数现在是 Circle Prototype 对象的一个方法。
<p style="text-indent: 2em">var a = ACircle.area(); // 此为如何在 Circle 对象上调用面积函数。
<p style="text-indent: 2em">使用这个原则，可以给预定义的构造函数（都具有原型对象）定义附加属性。例如，如果想要能够删除字符串的前后空格（与 VBScript 的 Trim 函数类似），就可以给 String 原型对象创建自己的方法。
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 增加一个名为 trim 的函数作为
<p style="text-indent: 2em">// String 构造函数的原型对象的一个方法。
<p style="text-indent: 2em">String.prototype.trim = function()
<p style="text-indent: 2em">{
<p style="text-indent: 2em">// 用正则表达式将前后空格
<p style="text-indent: 2em">// 用空字符串替代。
<p style="text-indent: 2em">return this.replace(/(^\s*)|(\s*$)/g, "");
<p style="text-indent: 2em">}
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 有空格的字符串
<p style="text-indent: 2em">var s = " leading and trailing spaces ";
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 显示 " leading and trailing spaces (35)"
<p style="text-indent: 2em">window.alert(s + " (" + s.length + ")");
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 删除前后空格
<p style="text-indent: 2em">s = s.trim();
<p style="text-indent: 2em">// 显示"leading and trailing spaces (27)"
<p style="text-indent: 2em">window.alert(s + " (" + s.length + ")");
<p style="text-indent: 2em">
<p style="text-indent: 2em">2.递归
<p style="text-indent: 2em">递归是一种重要的编程技术。该方法用于让一个函数从其内部调用其自身。一个示例就是计算阶乘。0 的阶乘被特别地定义为 1。 更大数的阶乘是通过计算 1 * 2 * ...来求得的，每次增加 1，直至达到要计算其阶乘的那个数。
<p style="text-indent: 2em">
<p style="text-indent: 2em">下面的段落是用文字定义的计算阶乘的一个函数。
<p style="text-indent: 2em">
<p style="text-indent: 2em">&#8220;如果这个数小于零，则拒绝接收。如果不是一个整数，则将其向下舍入为相邻的整数。如果这个数为 0，则其阶乘为 1。如果这个数大于 0，则将其与相邻较小的数的阶乘相乘。&#8221;
<p style="text-indent: 2em">
<p style="text-indent: 2em">要计算任何大于 0 的数的阶乘，至少需要计算一个其他数的阶乘。用来实现这个功能的函数就是已经位于其中的函数；该函数在执行当前的这个数之前，必须调用它本身来计算相邻的较小数的阶乘。这就是一个递归示例。
<p style="text-indent: 2em">
<p style="text-indent: 2em">递归和迭代（循环）是密切相关的 ? 能用递归处理的算法也都可以采用迭代，反之亦然。确定的算法通常可以用几种方法实现，您只需选择最自然贴切的方法，或者您觉得用起来最轻松的一种即可。
<p style="text-indent: 2em">
<p style="text-indent: 2em">显然，这样有可能会出现问题。可以很容易地创建一个递归函数，但该函数不能得到一个确定的结果，并且不能达到一个终点。这样的递归将导致计算机执行一个&#8220;无限&#8221;循环。下面就是一个示例：在计算阶乘的文字描述中遗漏了第一条规则（对负数的处理） ，并试图计算任何负数的阶乘。这将导致失败，因为按顺序计算 -24 的阶乘时，首先不得不计算 -25 的阶乘；然而这样又不得不计算 -26 的阶乘；如此继续。很明显，这样永远也不会到达一个终止点。
<p style="text-indent: 2em">
<p style="text-indent: 2em">因此在设计递归函数时应特别仔细。如果怀疑其中存在着无限递归的可能，则可以让该函数记录它调用自身的次数。如果该函数调用自身的次数太多，即使您已决定了它应调用多少次，就自动退出。
<p style="text-indent: 2em">
<p style="text-indent: 2em">下面仍然是阶乘函数，这次是用 JScript 代码编写的。
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 计算阶乘的函数。如果传递了
<p style="text-indent: 2em">// 无效的数值（例如小于零），
<p style="text-indent: 2em">// 将返回 -1，表明发生了错误。若数值有效，
<p style="text-indent: 2em">// 把数值转换为最相近的整数，并
<p style="text-indent: 2em">// 返回阶乘。
<p style="text-indent: 2em">function factorial(aNumber) {
<p style="text-indent: 2em">aNumber = Math.floor(aNumber); // 如果这个数不是一个整数，则向下舍入。
<p style="text-indent: 2em">if (aNumber &lt; 0) { // 如果这个数小于 0，拒绝接收。
<p style="text-indent: 2em">return -1;
<p style="text-indent: 2em">}
<p style="text-indent: 2em">if (aNumber == 0) { // 如果为 0，则其阶乘为 1。
<p style="text-indent: 2em">return 1;
<p style="text-indent: 2em">}
<p style="text-indent: 2em">else return (aNumber * factorial(aNumber - 1)); // 否则，递归直至完成。
<p style="text-indent: 2em">}
<p style="text-indent: 2em">
<p style="text-indent: 2em">3.变量范围
<p style="text-indent: 2em">JScript 有两种变量范围：全局和局部。如果在任何函数定义之外声明了一个变量，则该变量为全局变量，且该变量的值在整个持续范围内都可以访问和修改。如果在函数定义内声明了一个变量，则该变量为局部变量。每次执行该函数时都会创建和破坏该变量；且它不能被该函数外的任何事物访问。
<p style="text-indent: 2em">
<p style="text-indent: 2em">像 C++ 这样的语言也有&#8220;块范围&#8221;。在这里，任何一对&#8220;{}&#8221;都定义新的范围。JScript 不支持块范围。
<p style="text-indent: 2em">
<p style="text-indent: 2em">一个局部变量的名称可以与某个全局变量的名称相同，但这是完全不同和独立的两个变量。因此，更改一个变量的值不会影响另一个变量的值。在声明局部变量的函数内，只有该局部变量有意义。
<p style="text-indent: 2em">
<p style="text-indent: 2em">var aCentaur = "a horse with rider,"; // aCentaur 的全局定义。
<p style="text-indent: 2em">
<p style="text-indent: 2em">// JScript 代码，为简洁起见有省略。
<p style="text-indent: 2em">function antiquities() // 在这个函数中声明了一个局部 aCentaur 变量。
<p style="text-indent: 2em">{
<p style="text-indent: 2em">
<p style="text-indent: 2em">// JScript 代码，为简洁起见有省略。
<p style="text-indent: 2em">var aCentaur = "A centaur is probably a mounted Scythian warrior";
<p style="text-indent: 2em">
<p style="text-indent: 2em">// JScript 代码，为简洁起见有省略。
<p style="text-indent: 2em">aCentaur += ", misreported; that is, "; // 添加到局部变量。
<p style="text-indent: 2em">
<p style="text-indent: 2em">// JScript 代码，为简洁起见有省略。
<p style="text-indent: 2em">} // 函数结束。
<p style="text-indent: 2em">
<p style="text-indent: 2em">var nothinginparticular = antiquities();
<p style="text-indent: 2em">aCentaur += " as seen from a distance by a naive innocent.";
<p style="text-indent: 2em">
<p style="text-indent: 2em">/*
<p style="text-indent: 2em">在函数内，该变量的值为 "A centaur is probably a mounted Scythian warrior,
<p style="text-indent: 2em">misreported; that is, "；在函数外，该变量的值为这句话的其余部分：
<p style="text-indent: 2em">"a horse with rider, as seen from a distance by a naive innocent."
<p style="text-indent: 2em">*/
<p style="text-indent: 2em">很重要的一点是注意变量是否是在其所属范围的开始处声明的。有时这会导致意想不到的情况。
<p style="text-indent: 2em">
<p style="text-indent: 2em">tweak();
<p style="text-indent: 2em">var aNumber = 100;
<p style="text-indent: 2em">function tweak() {
<p style="text-indent: 2em">var newThing = 0; // 显式声明 newThing 变量。
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 本语句将未定义的变量赋给 newThing，因为已有名为 aNumber 的局部变量。
<p style="text-indent: 2em">newThing = aNumber;
<p style="text-indent: 2em">
<p style="text-indent: 2em">//下一条语句将值 42 赋给局部的 aNumber。aNumber = 42;
<p style="text-indent: 2em">if (false) {
<p style="text-indent: 2em">var aNumber; // 该语句永远不会执行。
<p style="text-indent: 2em">aNumber = 123; // 该语句永远不会执行。
<p style="text-indent: 2em">} // 条件语句结束。
<p style="text-indent: 2em">
<p style="text-indent: 2em">} // 该函数定义结束。
<p style="text-indent: 2em">当 JScript 运行函数时，首先查找所有的变量声明，
<p style="text-indent: 2em">
<p style="text-indent: 2em">var someVariable;
<p style="text-indent: 2em">并以未定义的初始值创建变量。如果变量被声明时有值，
<p style="text-indent: 2em">
<p style="text-indent: 2em">var someVariable = "something";
<p style="text-indent: 2em">那么该变量仍以未定义的值初始化，并且只有在运行了声明行时才被声明值取代，假如曾经被声明过。
<p style="text-indent: 2em">
<p style="text-indent: 2em">JScript 在运行代码前处理变量声明，所以声明是位于一个条件块中还是其他某些结构中无关紧要。JScript 找到所有的变量后立即运行函数中的代码。如果变量是在函数中显式声明的 ? 也就是说，如果它出现于赋值表达式的左边但没有用 var 声明 ? 那么将把它创建为全局变量。
<p style="text-indent: 2em">复制、传递和比较数据
<p style="text-indent: 2em">在 JScript 中，对数据的处理取决于该数据的类型。
<p style="text-indent: 2em">
<p style="text-indent: 2em">按值和按引用的比较
<p style="text-indent: 2em">Numbers 和 Boolean 类型的值 (true 和 false) 是按值来复制、传递和比较的。当按值复制或传递时，将在计算机内存中分配一块空间并将原值复制到其中。然后，即使更改原来的值，也不会影响所复制的值（反过来也一样），因为这两个值是独立的实体。
<p style="text-indent: 2em">
<p style="text-indent: 2em">对象、数组以及函数是按引用来复制、传递和比较的。 当按地址复制或传递时，实际是创建一个指向原始项的指针，然后就像拷贝一样来使用该指针。如果随后更改原始项，则将同时更改原始项和复制项（反过来也一样）。实际上只有一个实体；&#8220;复本&#8221;并不是一个真正的复本，而只是该数据的又一个引用。
<p style="text-indent: 2em">
<p style="text-indent: 2em">当按引用比较时，要想比较成功，两个变量必须参照完全相同的实体。例如，两个不同的 Array 对象即使包含相同的元素也将比较为不相等。要想比较成功，其中一个变量必须为另一个的参考。要想检查两个数组是否包含了相同的元素，比较 toString() 方法的结果。
<p style="text-indent: 2em">
<p style="text-indent: 2em">最后，字符串是按引用复制和传递的，但是是按值来比较的。请注意，假如有两个 String 对象（用 new String("something") 创建的），按引用比较它们，但是，如果其中一个或者两者都是字符串值的话，按值比较它们。
<p style="text-indent: 2em">
<p style="text-indent: 2em">注意 鉴于 ASCII和 ANSI 字符集的构造方法，按序列顺序大写字母位于小写字母的前面。例如 "Zoo" 小于 "aardvark"。如果想执行不区分大小写的匹配，可以对两个字符串调用 toUpperCase() 或 toLowerCase()。
<p style="text-indent: 2em">
<p style="text-indent: 2em">传递参数给函数
<p style="text-indent: 2em">按值传递一个参数给函数就是制作该参数的一个独立复本，即一个只存在于该函数内的复本。即使按引用传递对象和数组时，如果直接在函数中用新值覆盖原先的值，在函数外并不反映新值。只有在对象的属性或者数组的元素改变时，在函数外才可以看出。
<p style="text-indent: 2em">
<p style="text-indent: 2em">例如（使用 IE 对象模式）：
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 本代码段破坏（覆盖）其参数，所以
<p style="text-indent: 2em">// 调用代码中反映不出变化。
<p style="text-indent: 2em">function Clobber(param)
<p style="text-indent: 2em">{
<p style="text-indent: 2em">// 破坏参数；在调用代码中
<p style="text-indent: 2em">// 看不到。
<p style="text-indent: 2em">param = new Object();
<p style="text-indent: 2em">param.message = "This will not work";
<p style="text-indent: 2em">}
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 本段代码改变参数的属性，
<p style="text-indent: 2em">// 在调用代码中可看到属性改变。
<p style="text-indent: 2em">function Update(param)
<p style="text-indent: 2em">{
<p style="text-indent: 2em">// 改变对象的属性；
<p style="text-indent: 2em">// 可从调用代码中看到改变。
<p style="text-indent: 2em">param.message = "I was changed";
<p style="text-indent: 2em">}
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 创建一个对象，并赋给一个属性。
<p style="text-indent: 2em">var obj = new Object();
<p style="text-indent: 2em">obj.message = "This is the original";
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 调用 Clobber，并输出 obj.message。注意，它没有发生变化。
<p style="text-indent: 2em">Clobber(obj);
<p style="text-indent: 2em">window.alert(obj.message); // 仍然显示 "This is the original"。
<p style="text-indent: 2em">
<p style="text-indent: 2em">// 调用 Update，并输出 obj.message。注意，它已经被改变了。
<p style="text-indent: 2em">Update(obj);
<p style="text-indent: 2em">window.alert(obj.message); // 显示 "I was changed"。
<p style="text-indent: 2em">检验数据
<p style="text-indent: 2em">当按值进行检验时，是比较两个截然不同的项以查看它们是否相等。通常，该比较是逐字节进行的。当按引用进行检验时，是看这两项是否是指向同一个原始项的指针。如果是，则比较结果是相等；如果不是，即使它们每个字节都包含完全一样的值，比较结果也为不相等。
<p style="text-indent: 2em">
<p style="text-indent: 2em">按引用复制和传递字符串能节约内存；但是由于在字符串被创建后不能进行更改，因此可以按值进行比较。这样可以检查两个字符串是否包含相同的内容，即使它们是完全独立产生的。 </p>
<img src ="http://www.blogjava.net/deepbluesea/aggbug/226286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/deepbluesea/" target="_blank">deepbluesea</a> 2008-09-02 10:35 <a href="http://www.blogjava.net/deepbluesea/archive/2008/09/02/226286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>