<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[21 工作室 - ajax+json]]></title>
<link>http://www.is21.cn/</link>
<description><![CDATA[本站承接网页制作、软件项目开发、代写代码等业务，我们将和您真诚合作，以最低的价格提供最优越的服务。13488846575   联系人:潘劲]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[lianxiangpanjin@163.com(潘劲)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>21 工作室</title> 
	<url>http://www.is21.cn/images/logos.gif</url> 
	<link>http://www.is21.cn/</link> 
	<description>21 工作室</description> 
</image>

			<item>
			<link>http://www.is21.cn/default.asp?id=550</link>
			<title><![CDATA[Ajax + Servlet 实现上传文件进度条显示]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[ajax+json]]></category>
			<pubDate>Wed,10 Dec 2008 19:00:22 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=550</guid>	
		<description><![CDATA[用到了commons-fileupload-1.1.jar和commons-io-1.2.jar两个包<br/>客户端文件upload.jsp<br/>&lt;%@&nbsp;page&nbsp;language=&#34;java&#34;&nbsp;pageEncoding=&#34;GBK&#34;%&gt;<br/><br/>&lt;!DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;&#34;-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN&#34;&gt;<br/>&lt;html&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;head&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;My&nbsp;JSP&nbsp;&#39;upload.jsp&#39;&nbsp;starting&nbsp;page&lt;/title&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;type=&#34;text/javascript&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xmlHttp&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;cr&#101;ateXMLHttp(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(window.ActiveXObject){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp&nbsp;=&nbsp;new&nbsp;ActiveXObject(&#34;Microsoft.XMLHTTP&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp&nbsp;=&nbsp;new&nbsp;XMLHttpRequest()&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;ajaxSend(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cr&#101;ateXMLHttp()&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;content&nbsp;=&nbsp;&#34;status&#34;&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;url&nbsp;=&#34;upload?status=&#34;+content&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.onreadystatechange&nbsp;=&nbsp;handler&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.open(&#34;POST&#34;,url,true)&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.setRequestHeader(&#34;Content-Type&#34;,&#34;application/x-www-form-urlencoded&#34;);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.send(url)&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;handler(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;　if(xmlHttp.readyState&nbsp;==&nbsp;4)&nbsp;&nbsp;&nbsp;&nbsp;　{<br/>&nbsp;&nbsp;&nbsp;&nbsp;　　if(xmlHttp.status&nbsp;==&nbsp;200)&nbsp;&nbsp;&nbsp;&nbsp;　　{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;percent&nbsp;=&nbsp;xmlHttp.responseText&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;com&nbsp;=&nbsp;document.getElementById(&#34;com&#34;)&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;last&nbsp;=&nbsp;document.getElementById(&#34;last&#34;)&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;p&nbsp;=&nbsp;document.getElementById(&#34;percent&#34;)&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.setAttribute(&#34;width&#34;,percent+&#34;%&#34;)&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last.setAttribute(&#34;width&#34;,(100-percent)+&#34;%&#34;)&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(percent&nbsp;&lt;&nbsp;99){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.innerHTML=&#34;已经完成：&#34;+percent+&#34;%&#34;&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(&#34;ajaxSend()&#34;,100)&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.innerHTML=&#34;已经全部上传！&#34;&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;　　}<br/>&nbsp;&nbsp;&nbsp;&nbsp;　}<br/>&nbsp;&nbsp;&nbsp;&nbsp;　return&nbsp;true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;mySubmit(form){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.action=&#34;upload&#34;&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.submit()&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ajaxSend()<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/head&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;body&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form&nbsp;enctype=&#34;multipart/form-data&#34;&nbsp;name=&#34;fileform&#34;&nbsp;method=&#34;post&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target=&#34;target_upload&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=&#34;file&#34;&nbsp;value=&#34;浏览&#34;&nbsp;name=&#34;fileUpload&#34;&nbsp;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=&#34;button&#34;&nbsp;value=&#34;提交&#34;&nbsp;onclick=&#34;mySubmit(fileform)&#34;&nbsp;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id=&#34;status&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;table&nbsp;width=&#34;100%&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tbody&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;table&nbsp;width=&#34;30%&#34;&nbsp;align=&#34;left&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tbody&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;width=&#34;0%&#34;&nbsp;bgcolor=&#34;green&#34;&nbsp;height=&#34;25px&#34;&nbsp;id=&#34;com&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;width=&#34;100%&#34;&nbsp;bgcolor=&#34;#CCCCCC&#34;&nbsp;id=&#34;last&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tbody&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;id=&#34;percent&#34;&nbsp;align=&#34;center&#34;&gt;&lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tbody&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/body&gt;<br/>&lt;/html&gt;<br/>Servlet文件MyUpload.java<br/>package&nbsp;zbq.upload;<br/><br/>import&nbsp;java.io.File;<br/>import&nbsp;java.io.FileOutputStream;<br/>import&nbsp;java.io.IOException;<br/>import&nbsp;java.io.InputStream;<br/>import&nbsp;java.util.Iterator;<br/>import&nbsp;java.util.List;<br/><br/>import&nbsp;javax.servlet.ServletException;<br/>import&nbsp;javax.servlet.http.HttpServlet;<br/>import&nbsp;javax.servlet.http.HttpServletRequest;<br/>import&nbsp;javax.servlet.http.HttpServletResponse;<br/><br/>import&nbsp;o&#114;g.apache.commons.fileupload.FileItem;<br/>import&nbsp;o&#114;g.apache.commons.fileupload.FileItemFactory;<br/>import&nbsp;o&#114;g.apache.commons.fileupload.FileUploadException;<br/>import&nbsp;o&#114;g.apache.commons.fileupload.disk.DiskFileItemFactory;<br/>import&nbsp;o&#114;g.apache.commons.fileupload.servlet.ServletFileUpload;<br/><br/>public&nbsp;class&nbsp;MyUpload&nbsp;extends&nbsp;HttpServlet&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;doPost(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;ServletException,&nbsp;IOException&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(&#34;GBK&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(&#34;text;&nbsp;charset=ISO-8859-1&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&#34;status&#34;.equalsIgnoreCase(request.getParameter(&#34;status&#34;)))&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status(response);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totalSize&nbsp;=&nbsp;request.getContentLength();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.sendRedirect(&#34;upload.jsp&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upload(request);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(FileUploadException&nbsp;e)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;upload(HttpServletRequest&nbsp;request)&nbsp;throws&nbsp;IOException,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileUploadException&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileItemFactory&nbsp;factory&nbsp;=&nbsp;new&nbsp;DiskFileItemFactory();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;通过该工厂对象创建ServletFileUpload对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletFileUpload&nbsp;upload&nbsp;=&nbsp;new&nbsp;ServletFileUpload(factory);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;items&nbsp;=&nbsp;upload.parseRequest(request);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(Iterator&nbsp;i&nbsp;=&nbsp;items.iterator();&nbsp;i.hasNext();)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileItem&nbsp;fileItem&nbsp;=&nbsp;(FileItem)&nbsp;i.next();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果该FileItem不是表单域<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!fileItem.isFormField())&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fileName&nbsp;=&nbsp;fileItem.getName().substring(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileItem.getName().lastIndexOf(&#34;\\&#34;)&nbsp;+&nbsp;1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;file&nbsp;=&nbsp;new&nbsp;File(&#34;C:\\&#34;,&nbsp;fileName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;in&nbsp;=&nbsp;fileItem.getInputStream();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;out&nbsp;=&nbsp;new&nbsp;FileOutputStream(file);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;buffer&nbsp;=&nbsp;new&nbsp;byte[1024];&nbsp;//&nbsp;To&nbsp;hold&nbsp;file&nbsp;contents<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;n;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((n&nbsp;=&nbsp;in.read(buffer))&nbsp;!=&nbsp;-1)&nbsp;{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(buffer,&nbsp;0,&nbsp;n);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;completedSize&nbsp;+=&nbsp;(long)&nbsp;n;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileItem.del&#101;te();//&nbsp;内存中删除该数据流<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;status(HttpServletResponse&nbsp;response)&nbsp;throws&nbsp;IOException&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;lastSeconds&nbsp;=&nbsp;(System.currentTimeMillis()&nbsp;-&nbsp;startTime)&nbsp;/&nbsp;1024;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;percent&nbsp;=&nbsp;(int)&nbsp;(completedSize&nbsp;*&nbsp;100&nbsp;/&nbsp;(totalSize&nbsp;+&nbsp;0.0001));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.getWriter().print(percent);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;long&nbsp;totalSize&nbsp;=&nbsp;0L;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;long&nbsp;completedSize&nbsp;=&nbsp;0L;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;long&nbsp;startTime&nbsp;=&nbsp;System.currentTimeMillis();<br/>}<br/>WEB.xml就不用写了吧。<br/>但是在Struts2里边我还很迷糊，它把上传功能给封装了，好是好用，但是不好做上传进度条了。希望能抛砖引玉，各位高手能否做个struts2+ajax实现这个功能<br/><br/><br/>&#39;引用自<a href="http://hi.baidu.com/zhaobq27/blog/item/2b5e9895f1b23e49d0135e05.html" target="_blank">http://hi.baidu.com/zhaobq27/blog/item/2b5e9895f1b23e49d0135e05.html</a>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=379</link>
			<title><![CDATA[层的隐藏]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[ajax+json]]></category>
			<pubDate>Mon,23 Jun 2008 23:16:28 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=379</guid>	
		<description><![CDATA[示例一:<br/>&lt;script&gt;<br/>function&nbsp;button()&nbsp;{<br/>if&nbsp;(document.all.abc.value==&#34;隐藏&#34;){<br/><br/>document.getElementById(&#39;Div&#39;).style.display=&#34;none&#34;;<br/>document.getElementById(&#39;abc&#39;).value=&#34;显示&#34;;<br/>}else{<br/>document.getElementById(&#39;Div&#39;).style.display=&#34;block&#34;;<br/>document.getElementById(&#39;abc&#39;).value=&#34;隐藏&#34;;<br/>}<br/>}<br/>&lt;/script&gt;<br/>&lt;div&nbsp;id=&#34;Div&#34;&nbsp;style=&#34;display:none&#34;&gt;这里放你要放的信息就可以&lt;/div&gt;<br/>&lt;input&nbsp;id=&#34;abc&#34;&nbsp;type=&#34;button&#34;&nbsp;name=&#34;abc&#34;&nbsp;onclick=&#34;button();&#34;&nbsp;value=&#34;显示&#34;&nbsp;/&gt;<br/><br/><br/>示例二:<br/>&nbsp;&lt;script&gt;&nbsp;<br/>function&nbsp;button()&nbsp;{&nbsp;<br/>if&nbsp;(document.all.abc.value==&#34;隐藏&#34;){&nbsp;<br/><br/>document.getElementById(&#39;Div&#39;).style.display=&#34;none&#34;;&nbsp;<br/>document.getElementById(&#39;abc&#39;).value=&#34;显示&#34;;&nbsp;<br/>}else{&nbsp;<br/>document.getElementById(&#39;Div&#39;).style.display=&#34;block&#34;;&nbsp;<br/>document.getElementById(&#39;abc&#39;).value=&#34;隐藏&#34;;&nbsp;<br/>}&nbsp;<br/>}&nbsp;<br/>&lt;/script&gt;&nbsp;<br/>&lt;div&nbsp;id=&#34;Div&#34;&nbsp;style=&#34;display:none&#34;&gt;这里放你要放的信息就可以&nbsp;&lt;/div&gt;&nbsp;<br/>&lt;input&nbsp;id=&#34;abc&#34;&nbsp;type=&#34;button&#34;&nbsp;value=&#34;bbb&#34;&nbsp;onclick=&#34;button()&#34;&gt;<br/><br/><br/><br/>示例三:<br/>太平洋留言回复示例<br/><br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=353</link>
			<title><![CDATA[JSON]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[ajax+json]]></category>
			<pubDate>Sun,08 Jun 2008 14:48:14 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=353</guid>	
		<description><![CDATA[Ajax(Asynchronous&nbsp;JavaScript&nbsp;and&nbsp;XML)说到底就是一种浏览器异步读取服务器上XML内容的技术。现在的技术凡是跟XML扯上关系，再加上个概念做幌子，就像金装了一样，拽得不行。门外&nbsp;的人看得很是热闹，门里的人摇摇头不外如是。XML呢，跨平台的新潮语言？其实XML＝TXT。&nbsp;&nbsp;<br/>XML只是符合很多规范的文本。它本身什么都不是，只是保&nbsp;存字符的文件。而浏览器异步读取的只是服务器上的文本内容，所以在Ajax开发时完全不必拘泥于XML。[版权所有，www.jialing.net]&nbsp;<br/><br/>　　JSON的来历&nbsp;<br/><br/>　　XML&nbsp;的作用是格式化数据内容。如果我们不用XML还有什么更好的方法吗？这个答案是JSON。介绍JSON之前我先介绍一下JavaScript这门脚本语&nbsp;言。脚本语言自身有动态执行的天赋。即我们可以把想要执行的语句放在字符串里，通过eval()这个动态执行函数来执行。字符串里的内容会像我们写的脚本&nbsp;一样被执行。<br/><br/>　　示例1：<br/><br/>＜HTML＞<br/>＜HEAD＞<br/>　＜TITLE＞eval&nbsp;example&nbsp;1＜/TITLE＞<br/>＜/HEAD＞<br/>＜BODY＞<br/>　＜script＞<br/>　　str&nbsp;=&nbsp;&#34;alert(&#39;hello&#39;)&#34;;<br/>　　eval(str);<br/>　＜/script＞<br/>＜/BODY＞<br/>＜/HTML＞&nbsp;&nbsp;<br/><br/>　　打开页面会弹出hello窗口。<br/><br/>　　我们可以在字符串中放任何脚本语句，包括声明语句：<br/><br/>＜HTML＞<br/>＜HEAD＞<br/>＜TITLE＞eval&nbsp;example&nbsp;2＜/TITLE＞<br/>＜/HEAD＞<br/>＜BODY＞<br/>＜script＞<br/>　define&nbsp;=&nbsp;&#34;{name:&#39;Michael&#39;,email:&#39;17bity@gmail.com&#39;}&#34;;<br/>　eval(&#34;data&nbsp;=&nbsp;&#34;+define);<br/>　alert(&#34;name:&#34;+data.name);<br/>　alert(&#34;email:&#34;+data.email);<br/>＜/script＞<br/>＜/BODY＞<br/>＜/HTML＞&nbsp;<br/><br/>　　如果我们在后台异步传来的文本是JavaScript的声明语句，那么不是一条eval方法就能解析了？对于解析复杂的XML，这样的效率是多么大的提高啊！<br/><br/>　　现在就来告诉你什么是JSON：JavaScript&nbsp;Object&nbsp;Notation。我更愿意把它翻译为JavaScript对象声明。比如要从后台载入一些通讯录的信息，如果写成XML，如下：<br/><br/>＜contact＞<br/>　＜friend＞<br/>　　＜name＞Michael＜/name＞<br/>　　＜email＞17bity@gmail.com＜/email＞<br/>　　＜homepage＞<a href="http://www.jialing.net" target="_blank">http://www.jialing.net</a>＜/homepage＞<br/>　＜/friend＞<br/>　＜friend＞<br/>　　＜name＞John＜/name＞<br/>　　＜email＞john@gmail.com＜/email＞<br/>　　＜homepage＞<a href="http://www.john.com" target="_blank">http://www.john.com</a>＜/homepage＞<br/>　＜/friend＞<br/>　＜friend＞<br/>　　＜name＞Peggy＜/name＞<br/>　　＜email＞peggy@gmail.com＜/email＞<br/>　　＜homepage＞<a href="http://www.peggy.com" target="_blank">http://www.peggy.com</a>＜/homepage＞<br/>　＜/friend＞<br/>＜/contact＞&nbsp;<br/><br/>　　而写成JSON呢：<br/><br/>[<br/>{<br/>　name:&#34;Michael&#34;,<br/>　email:&#34;17bity@gmail.com&#34;,<br/>　homepage:&#34;<a href="http://www.jialing.net" target="_blank">http://www.jialing.net</a>&#34;<br/>},<br/>{<br/>　name:&#34;John&#34;,<br/>　email:&#34;john@gmail.com&#34;,<br/>　homepage:&#34;<a href="http://www.jobn.com" target="_blank">http://www.jobn.com</a>&#34;<br/>},<br/>{<br/>　name:&#34;Peggy&#34;,<br/>　email:&#34;peggy@gmail.com&#34;,<br/>　homepage:&#34;<a href="http://www.peggy.com" target="_blank">http://www.peggy.com</a>&#34;<br/>}<br/>]&nbsp;<br/><br/><br/>　　简单的不只是表达上，最重要的是可以丢弃让人晕头转向的DOM解析了。因为只要符合JavaScript的声明规范，JavaScrip会自动帮你解析好&nbsp;的。Ajax中使用JSON的基本方法是前台载入后台声明JavaScript对象的字符串，用eval方法来将它转为实际的对象，最后通过&nbsp;DHTML更新页面信息。&nbsp;<br/><br/><br/>JSON的格式&nbsp;<br/><br/>　　JSON的基本格式如下，图片来自json.org:<br/><br/>　　·对象是属性、值对的集合。一个对象的开始于&#34;{&#34;，结束于&#34;}&#34;。每一个属性名和值间用&#34;:&#34;提示，属性间用&#34;,&#34;分隔。<br/><br/><img src="http://www.is21.cn/attachments/month_0806/s200868144612.gif" border="0" alt=""/><br/><br/>·数组是有顺序的值的集合。一个数组开始于&#34;[&#34;，结束于&#34;]&#34;，值之间用&#34;,&#34;分隔。<br/><br/><img src="http://www.is21.cn/attachments/month_0806/7200868144634.gif" border="0" alt=""/><br/><br/>·值可以是引号里的字符串、数字、true、false、null，也可以是对象或数组。这些结构都能嵌套。<br/><br/><br/><img src="http://www.is21.cn/attachments/month_0806/k20086814472.gif" border="0" alt=""/><br/><br/>·字符串的定义和C或Java基本一致。<br/><br/><br/><img src="http://www.is21.cn/attachments/month_0806/l200868144730.gif" border="0" alt=""/><br/><br/>·数字的定义也和C或Java基本一致。<br/><br/><br/><img src="http://www.is21.cn/attachments/month_0806/i200868144759.gif" border="0" alt=""/><br/><br/>JSON&nbsp;VS&nbsp;XML&nbsp;<br/><br/>　　·可读性<br/><br/>　　JSON和XML的可读性可谓不相上下，一边是建议的语法，一边是规范的标签形式，很难分出胜负。<br/><br/>　　·可扩展性<br/><br/>&nbsp;<br/>　　XML天生有很好的扩展性，JSON当然也有，没有什么是XML能扩展，JSON不能的。<br/><br/>　　·编码难度<br/><br/>　　XML有丰富的编码工具，比如Dom4j、JDom等，JSON也有json.org提供的工具，但是JSON的编码明显比XML容易许多，即使不借助工具也能写出JSON的代码，可是要写好XML就不太容易了。<br/><br/>　　·解码难度<br/><br/>　　XML的解析得考虑子节点父节点，让人头昏眼花，而JSON的解析难度几乎为0。这一点XML输的真是没话说。<br/><br/>　　·流行度<br/><br/>　　XML已经被业界广泛的使用，而JSON才刚刚开始，但是在Ajax这个特定的领域，未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous&nbsp;JavaScript&nbsp;and&nbsp;JSON)了。&nbsp;<br/>]]></description>
		</item>
		
</channel>
</rss>