﻿<?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-小毅的遐想-文章分类-ajax</title><link>http://www.blogjava.net/xiaoyi/category/33887.html</link><description>阳光总在风雨后,让我们在雨中毅然前行,收获每一份喜悦的欢笑o(∩_∩)o...</description><language>zh-cn</language><lastBuildDate>Wed, 13 May 2009 19:21:17 GMT</lastBuildDate><pubDate>Wed, 13 May 2009 19:21:17 GMT</pubDate><ttl>60</ttl><item><title>小毅原创之---无聊时心血来潮纯手写ajax请求封装类（ajax请求参数支持JSON对象）</title><link>http://www.blogjava.net/xiaoyi/articles/270526.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Wed, 13 May 2009 19:15:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/270526.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/270526.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/270526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/270526.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/270526.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: js文件(yizhi_ajax.js)&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**//***&nbsp;&nbsp;仅作为学习交流之用&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;请您勿用于商业用途&nbsp;&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoyi/articles/270526.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoyi/aggbug/270526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2009-05-14 03:15 <a href="http://www.blogjava.net/xiaoyi/articles/270526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小毅总结之JSON与AJAX</title><link>http://www.blogjava.net/xiaoyi/articles/248530.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Fri, 26 Dec 2008 11:12:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/248530.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/248530.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/248530.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/248530.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/248530.html</trackback:ping><description><![CDATA[<p>什么是JSON?<br />
&nbsp;&nbsp;&nbsp;&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: #800000">&lt;script&nbsp;type="text/javascript"&gt;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;//纯字符串+eval<br />
<img id="Codehighlighter1_56_96_Open_Image" onclick="this.style.display='none'; Codehighlighter1_56_96_Open_Text.style.display='none'; Codehighlighter1_56_96_Closed_Image.style.display='inline'; Codehighlighter1_56_96_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_56_96_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_56_96_Closed_Text.style.display='none'; Codehighlighter1_56_96_Open_Image.style.display='inline'; Codehighlighter1_56_96_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;define&nbsp;=&nbsp;"</span><span id="Codehighlighter1_56_96_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_56_96_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000">name</span><span style="color: #000000">:</span><span style="color: #0000ff">'Michael',email:'17bity@gmail.com'</span><span style="color: #000000">}</span></span><span style="color: #800000">";<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　&nbsp;&nbsp;eval("data&nbsp;=&nbsp;"+define);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　&nbsp;&nbsp;alert("name:"+data.name);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　&nbsp;&nbsp;alert("email:"+data.email);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;//纯对象<br />
<img id="Codehighlighter1_208_262_Open_Image" onclick="this.style.display='none'; Codehighlighter1_208_262_Open_Text.style.display='none'; Codehighlighter1_208_262_Closed_Image.style.display='inline'; Codehighlighter1_208_262_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_208_262_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_208_262_Closed_Text.style.display='none'; Codehighlighter1_208_262_Open_Image.style.display='inline'; Codehighlighter1_208_262_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;user&nbsp;=</span><span id="Codehighlighter1_208_262_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_208_262_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name"</span><span style="color: #000000">:</span><span style="color: #0000ff">"yizhi",<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"age":22,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"belive":"阳光总在风雨后"<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">}</span></span><span style="color: #800000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(user.name);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(user.age);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(user.belive);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;//纯数组<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;color&nbsp;=<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;[<br />
<img id="Codehighlighter1_348_380_Open_Image" onclick="this.style.display='none'; Codehighlighter1_348_380_Open_Text.style.display='none'; Codehighlighter1_348_380_Closed_Image.style.display='inline'; Codehighlighter1_348_380_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_348_380_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_348_380_Closed_Text.style.display='none'; Codehighlighter1_348_380_Open_Image.style.display='inline'; Codehighlighter1_348_380_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_348_380_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_348_380_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000">"colorName"</span><span style="color: #000000">:</span><span style="color: #0000ff">"red","symbol":"喜庆"</span><span style="color: #000000">}</span></span><span style="color: #800000">,<br />
<img id="Codehighlighter1_385_419_Open_Image" onclick="this.style.display='none'; Codehighlighter1_385_419_Open_Text.style.display='none'; Codehighlighter1_385_419_Closed_Image.style.display='inline'; Codehighlighter1_385_419_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_385_419_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_385_419_Closed_Text.style.display='none'; Codehighlighter1_385_419_Open_Image.style.display='inline'; Codehighlighter1_385_419_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_385_419_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_385_419_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000">"colorName"</span><span style="color: #000000">:</span><span style="color: #0000ff">"green","symbol":"希望"</span><span style="color: #000000">}</span></span><span style="color: #800000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(color[0].colorName+"------&gt;"+color[0].symbol);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(color[1].colorName+"------&gt;"+color[1].symbol);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;//对象+属性+数组+属性<br />
<img id="Codehighlighter1_567_686_Open_Image" onclick="this.style.display='none'; Codehighlighter1_567_686_Open_Text.style.display='none'; Codehighlighter1_567_686_Closed_Image.style.display='inline'; Codehighlighter1_567_686_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_567_686_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_567_686_Closed_Text.style.display='none'; Codehighlighter1_567_686_Open_Image.style.display='inline'; Codehighlighter1_567_686_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;jsonObj&nbsp;=</span><span id="Codehighlighter1_567_686_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_567_686_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"myProperty"</span><span style="color: #000000">:</span><span style="color: #0000ff">"我的属性",<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"myObject":{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name":{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"firstName":"易",<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"familyName":"志",<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"fullName":"易志"<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">}</span></span><span style="color: #800000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"age":"myObject的年龄"<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"myFriends":[<br />
<img id="Codehighlighter1_738_791_Open_Image" onclick="this.style.display='none'; Codehighlighter1_738_791_Open_Text.style.display='none'; Codehighlighter1_738_791_Closed_Image.style.display='inline'; Codehighlighter1_738_791_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_738_791_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_738_791_Closed_Text.style.display='none'; Codehighlighter1_738_791_Open_Image.style.display='inline'; Codehighlighter1_738_791_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_738_791_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_738_791_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name"</span><span style="color: #000000">:</span><span style="color: #0000ff">"我的第①个朋友的名字",<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"age":"我的第①个朋友的年龄"<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">}</span></span><span style="color: #800000">,<br />
<img id="Codehighlighter1_797_850_Open_Image" onclick="this.style.display='none'; Codehighlighter1_797_850_Open_Text.style.display='none'; Codehighlighter1_797_850_Closed_Image.style.display='inline'; Codehighlighter1_797_850_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_797_850_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_797_850_Closed_Text.style.display='none'; Codehighlighter1_797_850_Open_Image.style.display='inline'; Codehighlighter1_797_850_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_797_850_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_797_850_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name"</span><span style="color: #000000">:</span><span style="color: #0000ff">"我的第②个朋友的名字",<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"age":"我的第②个朋友的年龄"<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">}</span></span><span style="color: #800000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert("jsonObje-----------&gt;复杂的json对象");<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(jsonObj.myProperty);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(jsonObj.myObject.name.firstName);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(jsonObj.myObject.name.familyName);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(jsonObj.myObject.name.fullName);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(jsonObj.myObject.age);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(jsonObj.myFriends[0].name);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(jsonObj.myFriends[0].age);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(jsonObj.myFriends[1].name);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;alert(jsonObj.myFriends[1].age);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&lt;/script&gt;</span></div>
<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: #000000">可通过ajax把json字符串传到后台&nbsp;后台可以把json字符串转为对象，也可以把对象或者数组转为json字符串，必须天就爱json的jar包，小测试：<br />
<img id="Codehighlighter1_114_2111_Open_Image" onclick="this.style.display='none'; Codehighlighter1_114_2111_Open_Text.style.display='none'; Codehighlighter1_114_2111_Closed_Image.style.display='inline'; Codehighlighter1_114_2111_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_114_2111_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_114_2111_Closed_Text.style.display='none'; Codehighlighter1_114_2111_Open_Image.style.display='inline'; Codehighlighter1_114_2111_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;User&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;&nbsp;ActionForm</span><span id="Codehighlighter1_114_2111_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_114_2111_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.yz.jsonTest;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</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">import</span><span style="color: #000000">&nbsp;org.json.JSONArray;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.json.JSONException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.json.JSONObject;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.json.JSONString;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_347_1183_Open_Image" onclick="this.style.display='none'; Codehighlighter1_347_1183_Open_Text.style.display='none'; Codehighlighter1_347_1183_Closed_Image.style.display='inline'; Codehighlighter1_347_1183_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_347_1183_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_347_1183_Closed_Text.style.display='none'; Codehighlighter1_347_1183_Open_Image.style.display='inline'; Codehighlighter1_347_1183_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;JsonTest&nbsp;</span><span id="Codehighlighter1_347_1183_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_347_1183_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_410_1052_Open_Image" onclick="this.style.display='none'; Codehighlighter1_410_1052_Open_Text.style.display='none'; Codehighlighter1_410_1052_Closed_Image.style.display='inline'; Codehighlighter1_410_1052_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_410_1052_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_410_1052_Closed_Text.style.display='none'; Codehighlighter1_410_1052_Open_Image.style.display='inline'; Codehighlighter1_410_1052_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;JSONException&nbsp;</span><span id="Codehighlighter1_410_1052_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_410_1052_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;Collection&nbsp;c&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getList();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">数组</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;JSONArray&nbsp;jary&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JSONArray(c);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;System.out.println(jary);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">[0,1,2,3,4]</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;String&nbsp;jsonStr2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">[{'a':'1','b':'2'},{'a':'3','b':'4'}]</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;JSONArray&nbsp;jary2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JSONArray(jsonStr2);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;System.out.println(jary2.getJSONObject(</span><span style="color: #000000">1</span><span style="color: #000000">).get(</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">3<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">对象</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;String&nbsp;jsonStr</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">{'name':'yizhi','age':'19'}</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;JSONObject&nbsp;jobj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JSONObject(jsonStr);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;System.out.println(jobj.get(</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">yizhi</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;System.out.println(jobj.get(</span><span style="color: #000000">"</span><span style="color: #000000">age</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">19</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;Map&nbsp;mp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HashMap();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;mp.put(</span><span style="color: #000000">"</span><span style="color: #000000">happy</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">开心</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;mp.put(</span><span style="color: #000000">"</span><span style="color: #000000">sad</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">悲伤</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;JSONObject&nbsp;jobj2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JSONObject(mp);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;System.out.println(jobj2.get(</span><span style="color: #000000">"</span><span style="color: #000000">happy</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">开心</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_1083_1181_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1083_1181_Open_Text.style.display='none'; Codehighlighter1_1083_1181_Closed_Image.style.display='inline'; Codehighlighter1_1083_1181_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1083_1181_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1083_1181_Closed_Text.style.display='none'; Codehighlighter1_1083_1181_Open_Image.style.display='inline'; Codehighlighter1_1083_1181_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;List&nbsp;getList()</span><span id="Codehighlighter1_1083_1181_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_1083_1181_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;List&nbsp;lst&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList();<br />
<img id="Codehighlighter1_1145_1164_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1145_1164_Open_Text.style.display='none'; Codehighlighter1_1145_1164_Closed_Image.style.display='inline'; Codehighlighter1_1145_1164_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1145_1164_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1145_1164_Closed_Text.style.display='none'; Codehighlighter1_1145_1164_Open_Image.style.display='inline'; Codehighlighter1_1145_1164_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</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;</span><span style="color: #000000">5</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_1145_1164_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_1145_1164_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;lst.add(i);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;lst;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;}</span></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="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />Action中。。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.yz.jsonTest;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.ArrayList;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.List;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServletRequest;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServletResponse;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.struts.action.ActionForm;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.struts.action.ActionForward;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.struts.action.ActionMapping;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.struts.actions.DispatchAction;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.json.JSONArray;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_1636_2109_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1636_2109_Open_Text.style.display='none'; Codehighlighter1_1636_2109_Closed_Image.style.display='inline'; Codehighlighter1_1636_2109_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1636_2109_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1636_2109_Closed_Text.style.display='none'; Codehighlighter1_1636_2109_Open_Image.style.display='inline'; Codehighlighter1_1636_2109_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;JsonTestAction&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;DispatchAction&nbsp;</span><span id="Codehighlighter1_1636_2109_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_1636_2109_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_1670_1854_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1670_1854_Open_Text.style.display='none'; Codehighlighter1_1670_1854_Closed_Image.style.display='inline'; Codehighlighter1_1670_1854_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1670_1854_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1670_1854_Closed_Text.style.display='none'; Codehighlighter1_1670_1854_Open_Image.style.display='inline'; Codehighlighter1_1670_1854_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">User</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;getUserList()</span><span id="Codehighlighter1_1670_1854_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_1670_1854_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">User</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;lst&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList</span><span style="color: #000000">&lt;</span><span style="color: #000000">User</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
<img id="Codehighlighter1_1736_1834_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1736_1834_Open_Text.style.display='none'; Codehighlighter1_1736_1834_Closed_Image.style.display='inline'; Codehighlighter1_1736_1834_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1736_1834_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1736_1834_Closed_Text.style.display='none'; Codehighlighter1_1736_1834_Open_Image.style.display='inline'; Codehighlighter1_1736_1834_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">3</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span id="Codehighlighter1_1736_1834_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_1736_1834_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;User&nbsp;u&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;User();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;u.setId(i);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;u.setAge(i</span><span style="color: #000000">+</span><span style="color: #000000">20</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;u.setName(i</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">号</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;lst.add(u);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;lst;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ActionForward&nbsp;TestJson(ActionMapping&nbsp;mapping,&nbsp;ActionForm&nbsp;form,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)<br />
<img id="Codehighlighter1_2010_2105_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2010_2105_Open_Text.style.display='none'; Codehighlighter1_2010_2105_Closed_Image.style.display='inline'; Codehighlighter1_2010_2105_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2010_2105_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2010_2105_Closed_Text.style.display='none'; Codehighlighter1_2010_2105_Open_Image.style.display='inline'; Codehighlighter1_2010_2105_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;</span><span id="Codehighlighter1_2010_2105_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_2010_2105_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;JSONArray&nbsp;jary&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JSONArray(getUserList());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;System.out.println(jary);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;<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="" /></span></div>
</span>
<img src ="http://www.blogjava.net/xiaoyi/aggbug/248530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2008-12-26 19:12 <a href="http://www.blogjava.net/xiaoyi/articles/248530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用xmlhttp和Java session监听改善站内消息系统</title><link>http://www.blogjava.net/xiaoyi/articles/227391.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Sat, 06 Sep 2008 04:58:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/227391.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/227391.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/227391.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/227391.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/227391.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
这个题目含有许多需要解释的概念，最容易说明的是&#8220;站内消息&#8221;，这是很多论坛都有的功能，可以通过web向其他的在线用户发送消息，很多用户都使用过。站内消息的第一个好处是大家都不需要安装客户端，你不用知道对方的MSN或者QQ，就能与他联系，称赞他的观点或者是给他一顿臭骂。第二个好处是客户管理方便，利用session来维护在线名单，各种脚本都已经把session操作封装得很易用了，不用像其他无状态的即时通信工具（比如使用UDP通信的工具）一样，要费一些脑细胞来解决在线名单的问题。缺点嘛，就是实时性不好，一般是在用户跳转或者刷新页面才能探测消息、更新在线名单。<br />
<br />
　　Session监听嘛，没什么好解释的，java提供了很灵活的事件机制来监听session，可以监听session的创建和销毁，监控session所携带数据的创建、变化和销毁，可以监听session的锐化和钝化（了解对象序列化的兄弟应该知道这个），其他的平台是个什么情况我不太清楚，估计也差不多吧。如果能够对所有客户的session进行监控，就不用再去操作麻烦而危险的Application了。<br />
<br />
　　Xmlhttp是MS推的一项技术，功能很复杂，可以做很多事情，比如客户端可以在简单的HTML中打开HTTP连接，主动向server请求数据并获得返回数据，是DOM技术一个非常重要的应用，利用它来写无刷新的动态页面简直是so&nbsp;easy，做过web开发的兄弟应该明白它的意义有多么重大。<br />
<br />
一、&nbsp;session监听<br />
<br />
　　servlet中对session的监听有很多接口，功能很灵活，最常用的是监听Session和Attribute。这里要澄清一下概念，servlet中的session监听和Attribute监听含义有差别，session监听指的不是我们一般所理解的放置一个session或者销毁一个session，这是Attribute监听的功能，因为servlet中放置session的语法是session.setAttribute(&#8220;session名&#8221;,要放入的对象)。而session监听，监听的是HTTP连接，只要有用户与server连接，就算连接的是一个空白的jsp页面，也会触发session事件，所以此处的session实际上指的是connection，用来统计当前在线用户数最合适了。不知道我说清楚了没有。下面分别讲解这两种监听方式。<br />
<br />
1、&nbsp;session监听<br />
<br />
　　首先编写一个session监听类，实作HttpSessionListener接口，它的作用是计算当前有多少个在线用户：<br />
<br />
<div>
<ol>
    <li><font size="2"><em><font color="#339900">/**</font></em> </font>
    <li><font size="2"><em><font color="#339900">*@Author&nbsp;bromon</font></em> </font>
    <li><font size="2"><em><font color="#339900">*2004-6-12</font></em> </font>
    <li><font size="2"><em><font color="#339900">*/</font></em> </font>
    <li><font size="2"><strong><font color="#0000ff">package</font></strong>&nbsp;org.bromon.test; </font>
    <li><font size="2"></font>
    <li><font size="2"><strong><font color="#0000ff">import</font></strong>&nbsp;javax.servlet.*; </font>
    <li><font size="2"><strong><font color="#0000ff">import</font></strong>&nbsp;javax.servlet.http.*; </font>
    <li><font size="2"></font>
    <li><font size="2"><strong><font color="#0000ff">public</font></strong>&nbsp;<strong><font color="#0000ff">class</font></strong>&nbsp;SessionCount&nbsp;<strong><font color="#0000ff">implements</font></strong>&nbsp;</font><a href="http://www.javaresearch.org/source/j2ee1.3.1/javax/servlet/http/HttpSessionListener.java.html" target="_blank"><font color="#0000ff" size="2"><u>HttpSessionListener</u></font></a><font size="2"> </font>
    <li><font size="2">{ </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">private</font></strong>&nbsp;<strong><font color="#0000ff">static</font></strong>&nbsp;<strong><font color="#0000ff">int</font></strong>&nbsp;count=0; </font>
    <li><font size="2"></font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">public</font></strong>&nbsp;<strong><font color="#0000ff">void</font></strong>&nbsp;sessionCreated(</font><a href="http://www.javaresearch.org/source/j2ee1.3.1/javax/servlet/http/HttpSessionEvent.java.html" target="_blank"><font color="#0000ff" size="2"><u>HttpSessionEvent</u></font></a><font size="2">&nbsp;se) </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;{ </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++; </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font color="#0000ff"><u>System</u></font></a></strong>.out.println(&#8220;session创建：&#8221;+<strong><font color="#0000ff">new</font></strong>&nbsp;java.util.<strong><a href="http://www.javaresearch.org/source/jdk142/java/util/Date.java.html" target="_blank"><font color="#0000ff"><u>Date</u></font></a></strong>()); </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;} </font>
    <li><font size="2"></font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">public</font></strong>&nbsp;<strong><font color="#0000ff">void</font></strong>&nbsp;sessionDestroyed(</font><a href="http://www.javaresearch.org/source/j2ee1.3.1/javax/servlet/http/HttpSessionEvent.java.html" target="_blank"><font color="#0000ff" size="2"><u>HttpSessionEvent</u></font></a><font size="2">&nbsp;se) </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;{ </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count--; </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font color="#0000ff"><u>System</u></font></a></strong>.out.println(&#8220;session销毁:&#8221;+<strong><font color="#0000ff">new</font></strong>&nbsp;java.util.<strong><a href="http://www.javaresearch.org/source/jdk142/java/util/Date.java.html" target="_blank"><font color="#0000ff"><u>Date</u></font></a></strong>()); </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;} </font>
    <li><font size="2"></font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">public</font></strong>&nbsp;<strong><font color="#0000ff">static</font></strong>&nbsp;<strong><font color="#0000ff">int</font></strong>&nbsp;getCount() </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;{ </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">return</font></strong>(count); </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} </font>
    <li><font size="2">} </font></li>
</ol>
</div>
<br />
<font size="2">　　怎么样，是不是一目了然？count被定义为static，是因为要保证整个系统只有这一个count。如果你实在不放心，可以把它写成一个单例类。<br />
<br />
　　然后在web.xml中声明这个监听器：<br />
&lt;listener&gt;<br />
&lt;listener-class&gt;<br />
org.bromon.test.SessionCount<br />
&lt;/listener-class&gt;<br />
&lt;/listener&gt;<br />
<br />
　　编写一个测试页面test.jsp，内容是获得count：<br />
&lt;%<br />
int&nbsp;count=org.bromon.test.SessionCount.getCount();<br />
out.println(count);<br />
%&gt;<br />
<br />
　　需要注意的是，这里根本不涉及任何session的操作。重启动App&nbsp;server，试着连接test.jsp，可以看到监听器已经开始工作。<br />
<br />
2、&nbsp;Attribute监听<br />
　　作为一个站内消息系统，肯定要获得所有登陆者的ID，才有可能互发消息。这就涉及Attribute监听。假设我们写了个用户登陆的模块，用户通过身份验证之后会产生一个session，保存它的相关信息，比如：<br />
</font>
<div>
<ol>
    <li><font size="2"><em><font color="#339900">//check.jsp</font></em> </font>
    <li><font size="2">&lt;% </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<strong><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font color="#0000ff"><u>String</u></font></a></strong>&nbsp;name=request.getParameter(&#8220;name&#8221;); </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">Name</font>=<strong><font color="#0000ff">new</font></strong>&nbsp;<strong><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font color="#0000ff"><u>String</u></font></a></strong>(name.getBytes(&#8220;ISO8859-1&#8221;)); </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;session.setAttribute(&#8220;user&#8221;,name); </font>
    <li><font size="2">%&gt; </font></li>
</ol>
</div>
<br />
<br />
<font size="2">　　做过jsp的兄弟应该对这段代码再熟悉不过了，下面写个监听器来监听用户登陆，把所有用户的ID保存到一个List当中，这个监听器实作HttpSessionAttributeListener接口：<br />
<br />
</font>
<div>
<ol>
    <li><font size="2"><em><font color="#339900">/**</font></em> </font>
    <li><font size="2"><em><font color="#339900">*@Author&nbsp;bromon</font></em> </font>
    <li><font size="2"><em><font color="#339900">*2004-6-12</font></em> </font>
    <li><font size="2"><em><font color="#339900">*/</font></em> </font>
    <li><font size="2"><strong><font color="#0000ff">package</font></strong>&nbsp;org.bromon.test; </font>
    <li><font size="2"></font>
    <li><font size="2"><strong><font color="#0000ff">import</font></strong>&nbsp;javax.servlet.*; </font>
    <li><font size="2"><strong><font color="#0000ff">import</font></strong>&nbsp;javax.servlet.http.*; </font>
    <li><font size="2"><strong><font color="#0000ff">import</font></strong>&nbsp;java.util.*; </font>
    <li><font size="2"></font>
    <li><font size="2"><strong><font color="#0000ff">public</font></strong>&nbsp;<strong><font color="#0000ff">class</font></strong>&nbsp;OnlineList&nbsp;<strong><font color="#0000ff">implements</font></strong>&nbsp;</font><a href="http://www.javaresearch.org/source/j2ee1.3.1/javax/servlet/http/HttpSessionAttributeListener.java.html" target="_blank"><font color="#0000ff" size="2"><u>HttpSessionAttributeListener</u></font></a><font size="2"> </font>
    <li><font size="2">{ </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">private</font></strong>&nbsp;<strong><font color="#0000ff">static</font></strong>&nbsp;<strong><a href="http://www.javaresearch.org/source/jdk142/java/util/List.java.html" target="_blank"><font color="#0000ff"><u>List</u></font></a></strong>&nbsp;list=<strong><font color="#0000ff">new</font></strong>&nbsp;<strong><a href="http://www.javaresearch.org/source/jdk142/java/util/ArrayList.java.html" target="_blank"><font color="#0000ff"><u>ArrayList</u></font></a></strong>(); </font>
    <li><font size="2"></font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">public</font></strong>&nbsp;<strong><font color="#0000ff">void</font></strong>&nbsp;attributeAdded(</font><a href="http://www.javaresearch.org/source/j2ee1.3.1/javax/servlet/http/HttpSessionBindingEvent.java.html" target="_blank"><font color="#0000ff" size="2"><u>HttpSessionBindingEvent</u></font></a><font size="2">&nbsp;se) </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;{ </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">if</font></strong>(&#8220;user&#8221;.equals(se.getName())) </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(se.getValue()); </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;} </font>
    <li><font size="2"></font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">public</font></strong>&nbsp;<strong><font color="#0000ff">void</font></strong>&nbsp;attributeRemoved(</font><a href="http://www.javaresearch.org/source/j2ee1.3.1/javax/servlet/http/HttpSessionBindingEvent.java.html" target="_blank"><font color="#0000ff" size="2"><u>HttpSessionBindingEvent</u></font></a><font size="2">&nbsp;se) </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;{ </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">if</font></strong>(&#8220;user&#8221;.equals(se.getName())) </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.remove(se.getValue()); </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;} </font>
    <li><font size="2"></font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">public</font></strong>&nbsp;<strong><font color="#0000ff">void</font></strong>&nbsp;attributeReplaced(</font><a href="http://www.javaresearch.org/source/j2ee1.3.1/javax/servlet/http/HttpSessionBindingEvent.java.html" target="_blank"><font color="#0000ff" size="2"><u>HttpSessionBindingEvent</u></font></a><font size="2">&nbsp;se){} </font>
    <li><font size="2"></font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">public</font></strong>&nbsp;<strong><font color="#0000ff">static</font></strong>&nbsp;<strong><a href="http://www.javaresearch.org/source/jdk142/java/util/List.java.html" target="_blank"><font color="#0000ff"><u>List</u></font></a></strong>&nbsp;getList() </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;{ </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">return</font></strong>(list); </font>
    <li><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} </font>
    <li><font size="2">} </font></li>
</ol>
</div>
<br />
<br />
<font size="2">写个简单的jsp来得到用户列表：<br />
&lt;%<br />
&nbsp;&nbsp;&nbsp;&nbsp;java.util.List&nbsp;list=org.bromon.test.OnlineList.getList();<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.println(&#8220;共有&#8221;+list.size()+&#8221;名用户已登陆：&#8221;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;I=0;I&lt;lise.size();i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(list.get(i));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
%&gt;<br />
<br />
也许你说，这有什么神奇呢，监听session而已，不着急，看看xmlhttp。<br />
<br />
二、&nbsp;XMLHTTP<br />
<br />
　　XMLHTTP的用处很多，这里只说我们需要的，就是无刷新的与server通信，看这段代码：<br />
<br />
</font>
<div>
<ol>
    <li><font size="2">&lt;script&nbsp;language=<font color="#ff33ff">"javascript"</font>&gt;&nbsp; </font>
    <li><font size="2">xml&nbsp;=&nbsp;<strong><font color="#0000ff">new</font></strong>&nbsp;ActiveXObject(<font color="#ff33ff">"Microsoft.XMLHTTP"</font>);&nbsp; </font>
    <li><font size="2">var&nbsp;post=<font color="#ff33ff">"&nbsp;"</font>;<em><font color="#339900">//构造要携带的数据&nbsp;</font></em> </font>
    <li><font size="2">xml.open(<font color="#ff33ff">"POST"</font>,<font color="#ff33ff">"http://localhost:7001/TestWL/index.jsp"</font>,<strong><font color="#0000ff">false</font></strong>);<em><font color="#339900">//使用POST方法打开一个到服务器的连接，以异步方式通信&nbsp;</font></em> </font>
    <li><font size="2">xml.setrequestheader(<font color="#ff33ff">"content-length"</font>,post.<strong><font color="#0000ff">length</font></strong>);&nbsp; </font>
    <li><font size="2">xml.setrequestheader(<font color="#ff33ff">"content-type"</font>,<font color="#ff33ff">"application/x-www-form-urlencoded"</font>);&nbsp; </font>
    <li><font size="2">xml.send(post);<em><font color="#339900">//发送数据&nbsp;</font></em> </font>
    <li><font size="2">var&nbsp;res&nbsp;=&nbsp;xml.responseText;<em><font color="#339900">//接收服务器返回的数据&nbsp;</font></em> </font>
    <li><font size="2">document.write(res);&nbsp; </font>
    <li><font size="2">&lt;/script&gt; </font></li>
</ol>
</div>
<br />
<br />
<br />
<font size="2">　　豁然开朗，这段代码就是打开一个HTTP连接，以标准的HTTP格式传递数据，如果你喜欢，可以用XML的格式来传递。更改一下xml对象的构造方式就可以兼容Mozilla和Netscape。下面来写一个轮询，每隔一段时间刷新一次用户列表，当然，是不需要刷新页面的：<br />
<br />
</font>
<div>
<ol>
    <li><font size="2">&lt;html&gt; </font>
    <li><font size="2">&lt;head&gt;&lt;title&gt;探测器&lt;/title&gt; </font>
    <li><font size="2">&lt;script&nbsp;language=<font color="#ff33ff">"javascript"</font>&gt; </font>
    <li><font size="2">function&nbsp;detect() </font>
    <li><font size="2">{ </font>
    <li><font size="2">xml&nbsp;=&nbsp;<strong><font color="#0000ff">new</font></strong>&nbsp;ActiveXObject(<font color="#ff33ff">"Microsoft.XMLHTTP"</font>);&nbsp; </font>
    <li><font size="2">var&nbsp;post=<font color="#ff33ff">"&nbsp;"</font>;<em><font color="#339900">//构造要携带的数据&nbsp;</font></em> </font>
    <li><font size="2">xml.open(<font color="#ff33ff">"POST"</font>,<font color="#ff33ff">"http://localhost:7001/TestWL/index.jsp"</font>,<strong><font color="#0000ff">false</font></strong>);<em><font color="#339900">//使用POST方法打开一个到服务器的连接，以异步方式通信&nbsp;</font></em> </font>
    <li><font size="2">xml.setrequestheader(<font color="#ff33ff">"content-length"</font>,post.<strong><font color="#0000ff">length</font></strong>);&nbsp; </font>
    <li><font size="2">xml.setrequestheader(<font color="#ff33ff">"content-type"</font>,<font color="#ff33ff">"application/x-www-form-urlencoded"</font>);&nbsp; </font>
    <li><font size="2">xml.send(post);<em><font color="#339900">//发送数据&nbsp;</font></em> </font>
    <li><font size="2">var&nbsp;res&nbsp;=&nbsp;xml.responseText;<em><font color="#339900">//接收服务器返回的数据&nbsp;</font></em> </font>
    <li><font size="2">list.innerText=res; </font>
    <li><font size="2">setTimeout(&#8220;detect()&#8221;,5000);<em><font color="#339900">//每隔5秒钟轮询一次</font></em> </font>
    <li><font size="2">}&nbsp; </font>
    <li><font size="2">&lt;/script&gt; </font>
    <li><font size="2">&lt;body&nbsp;onload=&#8221;detect()&#8221;&gt; </font>
    <li><font size="2">&lt;a&nbsp;id=&#8221;list&#8221;&gt;&lt;/a&gt; </font>
    <li><font size="2">&lt;/body&gt; </font>
    <li><font size="2">&lt;/html&gt; </font></li>
</ol>
</div>
<br />
<br />
<font size="2">　　这样的通信方式数据量很小，不用重新传递整个页面，5秒钟轮一次，普通PC也能承受较大的在线数。构造一个探测器来监听在线列表和消息，效果是很好的，即使你的客户坐在电脑前袖手旁观，键鼠都不碰一下，也能保证数据即时传递，页面也不会发生跳转和刷新。<br />
<br />
　　Session监听加上XMLHTTP通信，开发一个较为完善的站内消息系统实在易如反掌</font>
<img src ="http://www.blogjava.net/xiaoyi/aggbug/227391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2008-09-06 12:58 <a href="http://www.blogjava.net/xiaoyi/articles/227391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax上传下载</title><link>http://www.blogjava.net/xiaoyi/articles/227390.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Sat, 06 Sep 2008 04:53:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/227390.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/227390.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/227390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/227390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/227390.html</trackback:ping><description><![CDATA[<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">首先要说的就是 ajax 是无法实现上传文件的，可以想一下ajax与后台通信都是通过传递字符串，怎么能传递文件呢？其实出于安全考虑js是不能操作文件的，所以就不要再说用ajax来实现文件的上传了，这是不可能的。<br />
&nbsp;&nbsp;&nbsp; 而本文实现的文件上传也是无页面刷新的，可以说是一种"类似AJAX"方法。<br />
&nbsp;&nbsp;&nbsp; 开始之前先说两句无关的，其实在ajax出现之前，web应用也可以是无刷新的，那时大多通过IFrame来做到这一点。当然Ajax出现之后，人们一窝 蜂地投奔Ajax 的阵营了，iFrame 就乏人问津了。但是用iFrame来实现无刷新上传文件确实一个很好的选择。ps：Ajax技术基本上可以说是由google公司带起来的，但少 Gmail中上传文件用的还是 IFrame，所以说使用IFrame来上传文件是最好的选择。<br />
&nbsp;&nbsp;&nbsp; 我在这里这里用的技术是jsp，其实asp，php等也是一样可以这么实现的<br />
&nbsp;&nbsp;&nbsp; 一共两个文件就可实现：index.html 和 upload.jsp.<br />
index.html</span></span></span></strong>
<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"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">form&nbsp;</span><span style="color: #ff0000">action</span><span style="color: #0000ff">="upload.jsp"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="form1"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="form1"</span><span style="color: #ff0000">&nbsp;encType</span><span style="color: #0000ff">="multipart/form-data"</span><span style="color: #ff0000">&nbsp;method</span><span style="color: #0000ff">="post"</span><span style="color: #ff0000">&nbsp;target</span><span style="color: #0000ff">="hidden_frame"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="file"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="file"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="file"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="width:450"</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">INPUT&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="上传文件"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="msg"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">font&nbsp;</span><span style="color: #ff0000">color</span><span style="color: #0000ff">="red"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">支持JPG,JPEG,GIF,BMP,SWF,RMVB,RM,AVI文件的上传</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">font</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">iframe&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">='hidden_frame'&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="hidden_frame"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">iframe</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">form</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_474_681_Open_Image" onclick="this.style.display='none'; Codehighlighter1_474_681_Open_Text.style.display='none'; Codehighlighter1_474_681_Closed_Image.style.display='inline'; Codehighlighter1_474_681_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_474_681_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_474_681_Closed_Text.style.display='none'; Codehighlighter1_474_681_Open_Image.style.display='inline'; Codehighlighter1_474_681_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span id="Codehighlighter1_474_681_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></span></span></strong><span id="Codehighlighter1_474_681_Open_Text"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000; background-color: #f5f5f5">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff; background-color: #f5f5f5">function</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000; background-color: #f5f5f5">&nbsp;callback(msg)&nbsp;<br />
<img id="Codehighlighter1_500_679_Open_Image" onclick="this.style.display='none'; Codehighlighter1_500_679_Open_Text.style.display='none'; Codehighlighter1_500_679_Closed_Image.style.display='inline'; Codehighlighter1_500_679_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_500_679_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_500_679_Closed_Text.style.display='none'; Codehighlighter1_500_679_Open_Image.style.display='inline'; Codehighlighter1_500_679_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_500_679_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></span></span></strong><span id="Codehighlighter1_500_679_Open_Text"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000; background-color: #f5f5f5">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">file</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).outerHTML&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">file</span><span style="color: #000000; background-color: #f5f5f5">"</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000; background-color: #f5f5f5">).outerHTML;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">msg</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).innerHTML&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&lt;font&nbsp;color=red&gt;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">msg</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&lt;/font&gt;</span><span style="color: #000000; background-color: #f5f5f5">"</span></span></span></span></strong><span style="color: #000000; background-color: #f5f5f5"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></span></strong></span></span><span style="color: #000000; background-color: #f5f5f5"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span></span></strong></span></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span></span></span></span></strong></div>
<br />
<font color="#000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">index.html 中主要要做的就是写一个 form 和 iframe ，并把 form 的 target 设为 iframe 的名字，注意要把 iframe 设为不可见，其他的都是正常的文件上传的写法，这样刷新的页面就是这个隐藏的 Iframe ，而在 index.html 中是不会有页面刷新的，js的 callback 方法是回调方法。用于清空文件上传框和显示后台信息，注意清空文件上传框的方法，和普通方法有点不一样。</span></span></span></strong>
<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"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&lt;%</span><span style="color: #000000">@&nbsp;page&nbsp;language</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">java</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;contentType</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/html;&nbsp;charset=gb2312</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;%</span><span style="color: #000000">@&nbsp;page&nbsp;</span><span style="color: #0000ff">import</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.jspsmart.upload.SmartUpload</span><span style="color: #000000">"</span><span style="color: #000000">%&gt;</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;%</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">新建一个SmartUpload对象&nbsp;</span></span></span></span></strong><span style="color: #008000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SmartUpload&nbsp;su&nbsp;</span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;SmartUpload();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">上传初始化&nbsp;</span></span></span></span></strong><span style="color: #008000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;su.initialize(pageContext);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></strong></span><span style="color: #008000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">//</span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #008000">&nbsp;设定上传限制&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">1.限制每个上传文件的最大长度。&nbsp;</span></span></span></span></strong><span style="color: #008000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;su.setMaxFileSize(</span></span></span></strong></span><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">10000000</span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">2.限制总上传数据的长度。&nbsp;</span></span></span></span></strong><span style="color: #008000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;su.setTotalMaxFileSize(</span></span></span></strong></span><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">20000000</span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">3.设定允许上传的文件（通过扩展名限制）,仅允许doc,txt文件。&nbsp;</span></span></span></span></strong><span style="color: #008000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;su.setAllowedFilesList(</span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">"</span><span style="color: #000000">doc,txt,jpg,rar,mid,waw,mp3,gif</span><span style="color: #000000">"</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;sign&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">4.设定禁止上传的文件（通过扩展名限制）,禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。&nbsp;</span></span></span></span></strong><span style="color: #008000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img id="Codehighlighter1_632_797_Open_Image" onclick="this.style.display='none'; Codehighlighter1_632_797_Open_Text.style.display='none'; Codehighlighter1_632_797_Closed_Image.style.display='inline'; Codehighlighter1_632_797_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_632_797_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_632_797_Closed_Text.style.display='none'; Codehighlighter1_632_797_Open_Image.style.display='inline'; Codehighlighter1_632_797_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_632_797_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></span></span></strong><span id="Codehighlighter1_632_797_Open_Text"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;su.setDeniedFilesList(</span><span style="color: #000000">"</span><span style="color: #000000">exe,bat,jsp,htm,html</span><span style="color: #000000">"</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">上传文件&nbsp;</span></span></span></span></strong><span style="color: #008000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;su.upload();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #008000">//</span><span style="color: #008000">将上传文件保存到指定目录&nbsp;</span></span></span></span></strong><span style="color: #008000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;su.save(</span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">"</span><span style="color: #000000">c:\\</span><span style="color: #000000">"</span></span></span></span></strong><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;<br />
<img id="Codehighlighter1_819_881_Open_Image" onclick="this.style.display='none'; Codehighlighter1_819_881_Open_Text.style.display='none'; Codehighlighter1_819_881_Closed_Image.style.display='inline'; Codehighlighter1_819_881_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_819_881_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_819_881_Closed_Text.style.display='none'; Codehighlighter1_819_881_Open_Image.style.display='inline'; Codehighlighter1_819_881_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></strong></span></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;</span><span id="Codehighlighter1_819_881_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></span></span></strong><span id="Codehighlighter1_819_881_Open_Text"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sign&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span></span></span></span></strong><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></strong></span></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(sign</span><span style="color: #000000">==</span><span style="color: #0000ff">true</span></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">)&nbsp;<br />
<img id="Codehighlighter1_908_997_Open_Image" onclick="this.style.display='none'; Codehighlighter1_908_997_Open_Text.style.display='none'; Codehighlighter1_908_997_Closed_Image.style.display='inline'; Codehighlighter1_908_997_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_908_997_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_908_997_Closed_Text.style.display='none'; Codehighlighter1_908_997_Open_Image.style.display='inline'; Codehighlighter1_908_997_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_908_997_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></span></span></strong><span id="Codehighlighter1_908_997_Open_Text"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;script&gt;parent.callback('upload&nbsp;file&nbsp;success')&lt;/script&gt;</span><span style="color: #000000">"</span></span></span></span></strong><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></strong></span></span><span style="color: #0000ff"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">else</span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img id="Codehighlighter1_1008_1095_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1008_1095_Open_Text.style.display='none'; Codehighlighter1_1008_1095_Closed_Image.style.display='inline'; Codehighlighter1_1008_1095_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1008_1095_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1008_1095_Closed_Text.style.display='none'; Codehighlighter1_1008_1095_Open_Image.style.display='inline'; Codehighlighter1_1008_1095_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1008_1095_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></span></span></strong><span id="Codehighlighter1_1008_1095_Open_Text"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;script&gt;parent.callback('upload&nbsp;file&nbsp;error')&lt;/script&gt;</span><span style="color: #000000">"</span></span></span></span></strong><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></strong></span></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">%&gt;</span><span style="color: #000000">&nbsp;</span></span></span></span></strong></div>
<p><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">upload.jsp 中只要注意最后输出的格式就可以了。其实原理就是输出一段js代码到 iframe 中，然后在iframe中来控制它的父页面。<br />
<br />
&nbsp;&nbsp;&nbsp; OK，至此一个无刷新的页面上传组件就做好了，<font color="#800080"><font color="#000000">不要忘了在 WEB-INF/lib 下加上必须的 jspSmartUpload.jar 包</font></font></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><font color="#800080"><font color="#000000">。<br />
&nbsp;&nbsp;&nbsp; 需要说明的是使用Iframe来上传，状态栏还是会有刷新的，因为iframe 中的页面刷新了嘛，但是外部页面，就是你所看到的页面是没有刷新的，所以也可以说是类似Ajax上传。</font></font><br />
<br />
下载</span></span></span></strong></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"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span></span></strong><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #800000">String&nbsp;filePath&nbsp;=&nbsp;"/文件夹1/文件夹2/JAVA教程.doc";<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />String&nbsp;fileName&nbsp;=&nbsp;"JAVA教程";&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />String&nbsp;serverPath&nbsp;=&nbsp;request.getRealPath("");<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />response.setContentType("APPLICATION/OCTET-STREAM");&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />response.setHeader("Content-disposition","attachment;filename="&nbsp;+&nbsp;new&nbsp;String(fileName.getBytes(),"iso8859-1"));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.FileInputStream&nbsp;fileInputStream&nbsp;=&nbsp;null;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />PrintWriter&nbsp;out&nbsp;=&nbsp;null;<br />
<img id="Codehighlighter1_362_532_Open_Image" onclick="this.style.display='none'; Codehighlighter1_362_532_Open_Text.style.display='none'; Codehighlighter1_362_532_Closed_Image.style.display='inline'; Codehighlighter1_362_532_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_362_532_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_362_532_Closed_Text.style.display='none'; Codehighlighter1_362_532_Open_Image.style.display='inline'; Codehighlighter1_362_532_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />try&nbsp;</span><span id="Codehighlighter1_362_532_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></span></span></strong><span id="Codehighlighter1_362_532_Open_Text"><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">{</span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #ff0000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />fileInputStream&nbsp;=&nbsp;new&nbsp;java.io.FileInputStream(serverPath&nbsp;+&nbsp;filePath);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />out&nbsp;=&nbsp;response.getWriter();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;i;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />while&nbsp;((i=fileInputStream.read())&nbsp;!=&nbsp;-1)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />out.write(i);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">}</span></span></span></span></strong></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #800000">&nbsp;<br />
<img id="Codehighlighter1_568_641_Open_Image" onclick="this.style.display='none'; Codehighlighter1_568_641_Open_Text.style.display='none'; Codehighlighter1_568_641_Closed_Image.style.display='inline'; Codehighlighter1_568_641_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_568_641_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_568_641_Closed_Text.style.display='none'; Codehighlighter1_568_641_Open_Image.style.display='inline'; Codehighlighter1_568_641_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />}&nbsp;catch(FileNotFoundException&nbsp;fe)</span><span id="Codehighlighter1_568_641_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></span></span></strong><span id="Codehighlighter1_568_641_Open_Text"><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">{</span></span></span></strong></span><span style="color: #ff0000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />fe.printStackTrace();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(errMsg=&nbsp;"file&nbsp;is&nbsp;not&nbsp;exist");<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">}</span></span></span></strong></span></span><span style="color: #800000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img id="Codehighlighter1_663_733_Open_Image" onclick="this.style.display='none'; Codehighlighter1_663_733_Open_Text.style.display='none'; Codehighlighter1_663_733_Closed_Image.style.display='inline'; Codehighlighter1_663_733_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_663_733_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_663_733_Closed_Text.style.display='none'; Codehighlighter1_663_733_Open_Image.style.display='inline'; Codehighlighter1_663_733_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />catch&nbsp;(Exception&nbsp;e)&nbsp;</span></span></span></strong></span><span id="Codehighlighter1_663_733_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"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">{<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />}</span></span></span></strong></span><span id="Codehighlighter1_663_733_Open_Text"><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">{</span></span></span></strong></span><span style="color: #ff0000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />e.printStackTrace();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(errMsg=&nbsp;"download&nbsp;failed");<br />
<img id="Codehighlighter1_742_828_Open_Image" onclick="this.style.display='none'; Codehighlighter1_742_828_Open_Text.style.display='none'; Codehighlighter1_742_828_Closed_Image.style.display='inline'; Codehighlighter1_742_828_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_742_828_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_742_828_Closed_Text.style.display='none'; Codehighlighter1_742_828_Open_Image.style.display='inline'; Codehighlighter1_742_828_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">}</span></span></span></strong></span></span><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><span style="color: #800000">&nbsp;finally</span><span id="Codehighlighter1_742_828_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></span></span></strong><span id="Codehighlighter1_742_828_Open_Text"><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">{</span></span></span></strong></span><span style="color: #ff0000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />if(fileInputStream&nbsp;!=&nbsp;null)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />fileInputStream.close();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />if(out&nbsp;!=&nbsp;null)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />out.close();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span></span></span></strong></span><span style="color: #000000"><strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060">}</span></span></span></strong></span></span><span style="color: #800000"><br />
<strong><span style="color: #008080"><span style="color: #ff6600"><span style="color: #ff6060"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span></span></strong></span></div>
<p><strong><span style="color: #008080"><span style="color: #ff6600"></span></span></strong>&nbsp;</p>
<p><strong><span style="color: #008080"><span style="color: #ff6600"></span></span></strong>&nbsp;</p>
<p><strong><br />
<span style="color: #008080"><span style="color: #ff6600"></span></span></strong>&nbsp;</p>
</font>
<img src ="http://www.blogjava.net/xiaoyi/aggbug/227390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2008-09-06 12:53 <a href="http://www.blogjava.net/xiaoyi/articles/227390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dwr框架在客户端远程调用方法返回自定义类型的例子</title><link>http://www.blogjava.net/xiaoyi/articles/223817.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Fri, 22 Aug 2008 17:19:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/223817.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/223817.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/223817.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/223817.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/223817.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: package&nbsp;com.yz.dwr;/**&nbsp;*//**&nbsp;*&nbsp;用户&nbsp;*&nbsp;@author&nbsp;小毅&nbsp;*&nbsp;*/public&nbsp;class&nbsp;Users&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;int&nbsp;uid;&...&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoyi/articles/223817.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoyi/aggbug/223817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2008-08-23 01:19 <a href="http://www.blogjava.net/xiaoyi/articles/223817.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dwr入门</title><link>http://www.blogjava.net/xiaoyi/articles/223603.html</link><dc:creator>可爱的小毅</dc:creator><author>可爱的小毅</author><pubDate>Thu, 21 Aug 2008 13:15:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoyi/articles/223603.html</guid><wfw:comment>http://www.blogjava.net/xiaoyi/comments/223603.html</wfw:comment><comments>http://www.blogjava.net/xiaoyi/articles/223603.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoyi/comments/commentRss/223603.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoyi/services/trackbacks/223603.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Dwr入门操作手册DWR配置和使用设置DWR的使用是简单的:将DWR的jar文件拷入Web应用的WEB-INF/lib目录中，在web.xml中增加一个servlet声明，并创建DWR的配置文件。DWR的分发中需要使用一个单独的jar文件。你必须将DWR&nbsp;servlet加到应用的WEB-INF/web.xml中布署描述段中去。&lt;servlet&gt;&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoyi/articles/223603.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoyi/aggbug/223603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoyi/" target="_blank">可爱的小毅</a> 2008-08-21 21:15 <a href="http://www.blogjava.net/xiaoyi/articles/223603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>