﻿<?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-摆渡人，外婆桥！-随笔分类-WEB2.0</title><link>http://www.blogjava.net/swingboat/category/6379.html</link><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;----只要路选对了，就不怕有多远！</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 10:00:07 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 10:00:07 GMT</pubDate><ttl>60</ttl><item><title>页面中DOCTYPE的作用。</title><link>http://www.blogjava.net/swingboat/archive/2006/04/11/40412.html</link><dc:creator>swingboat</dc:creator><author>swingboat</author><pubDate>Tue, 11 Apr 2006 03:37:00 GMT</pubDate><guid>http://www.blogjava.net/swingboat/archive/2006/04/11/40412.html</guid><wfw:comment>http://www.blogjava.net/swingboat/comments/40412.html</wfw:comment><comments>http://www.blogjava.net/swingboat/archive/2006/04/11/40412.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/swingboat/comments/commentRss/40412.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/swingboat/services/trackbacks/40412.html</trackback:ping><description><![CDATA[前几天，在做一个页面时，引入了样式文件，但是不起作用。后来跟踪发现竟然是DOCTYPE的设置问题。例如下面的HTML：<br />&lt;div class="testDiv"&gt;test<br />   &lt;table&gt;<br />      &lt;tr&gt;<br />         &lt;td&gt;Table Content&lt;/td&gt;<br />      &lt;/tr&gt;<br />   &lt;/table&gt;<br />&lt;/div&gt;<br />在testDiv中设置了字体的样式，但是浏览时（IE6和FireFox1.5)，发现test文本已经显示了testDiv中规定的样式，但Table Content却没有。去掉页面中的"<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"设置后，两文本都按testDiv的样式显示了。下面引入一篇对DOCTYPE详细解释的文章。<br /><br />原文作者： 周靖 译<br /><br />虽然大多数Web文档的顶部都有doctype声明，但很多人都没有注意它。它是在你新建一个文档时，由Web创作软件草率处理的众多细节之一。<br /><br />虽然doctype被许多人忽视，但在遵循标准的任何Web文档中，它都是一项必需的元素。doctype会影响代码验证，并决定了浏览器最终如何显示你的Web文档。<br /><br /><br /><b>doctype的作用</b><br />doctype声明指出阅读程序应该用什么规则集来解释文档中的标记。在Web文档的情况下，“阅读程序”通常是浏览器或者校验器这样的一个程序，“规则”则是W3C所发布的一个文档类型定义（DTD）中包含的规则。<br /><br />每个DTD都包括一系列标记、attributes和properties，它们用于标记Web文档的内容；此外还包括一些规则，它们规定了哪些标记能出现在其他哪些标记中。每个Web建议标准（比如HTML 4 Frameset和XHTML 1.0 Transitional）都有自己的DTD。<br /><br />假如文档中的标记不遵循doctype声明所指定的DTD，这个文档除了不能通过代码校验之外，还有可能无法在浏览器中正确显示。对于标记不一致的问题，浏览器相较于校验器来说更宽容。但是，<u>不正确的doctype声明经常导致网页不正确显示，或者导致它们根本不能显示</u>。<br /><br /><br /><b>选择正确的doctype</b><br />为了获得正确的doctype声明，关键就是让DTD与文档所遵循的标准对应。例如，假定文档遵循的是XHTML 1.0 Strict标准，文档的doctype声明就应该引用相应的DTD。另一方面，如果doctype声明指定的是XHTML DTD，但文档包含的是旧式风格的HTML标记，就是不恰当的；类似地，如果doctype声明指定的是HTML DTD，但文档包含的是XHTML 1.0 Strict标记，同样是不恰当的。<br /><br />有的时候，也可以根本不使用一个doctype声明。如果没有指定有效的doctype声明，大多数浏览器都会使用一个内建的默认DTD。在这种情况下，浏览器会用内建的DTD来试着显示你所指定的标记。对于一些临时性的、匆忙拼凑的文档（这种文档有许多），你确实可以考虑省略doctype声明，并接受浏览器的默认显示。<br /><br />完全可以从头编写一个doctype声明，并让它指向自己选择的一个DTD。然而，由于大多数Web文档都需要遵循由W3C发布的某个国际公认的Web标准，所以那些文档通常都要包含以下标准doctype声明之一：<br /><br />HTML 2：<br /><br /><br /><br />HTML 3.2：<br /><br /><br /><br />HTML 4.01 Strict：<br /><br />"http://www.w3.org/TR/html4/strict.dtd"&gt; <br /><br />HTML 4.01 Transitional：<br /><br />"http://www.w3.org/TR/html4/loose.dtd"&gt; <br /><br />HTML 4.01 Frameset：<br /><br />"http://www.w3.org/TR/html4/frameset.dtd"&gt; <br /><br />XHTML 1.0 Strict：<br /><br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; <br /><br />XHTML 1.0 Transitional：<br /><br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; <br /><br />XHTML 1.0 Frameset：<br /><br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt; <br /><br />XHTML 1.1：<br /><br />"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt; <br /><br />XHTML 1.1 plus MathML plus SVG：<br /><br />"-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"<br />"http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"&gt; <br /><br />除了上面列出的doctype声明，具有特殊要求的一些文档还使用了其他几种声明。<br /><br />doctype声明通常是文档的第一行，要在标记以及其他文档内容之前。注意，在XHTML文档中，doctype的前面偶尔会出现一条XML处理指令（也称为XML prolog）：<br /><br /><html><br /><br />为了确保网页正确显示和顺利通过验证，使用正确的doctype是关键。与内容相反的、不正确的或者形式错误的doctype是大量问题的罪魁祸首。在未来的专栏文章中，我还会具体解释如何诊断及纠正这些问题。<br /><br />用DW设计网页时，新建一个文件，看代码最前面总要出现一个下面的东东，<br />"http://www.w3.org/TR/html4/loose.dtd"&gt;<br />这个是DW自动在网页文件页增加了DTD信息.可以删.<br />删除后，浏览器会使用的默认DTD.<br /><br /><br /></html><img src ="http://www.blogjava.net/swingboat/aggbug/40412.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/swingboat/" target="_blank">swingboat</a> 2006-04-11 11:37 <a href="http://www.blogjava.net/swingboat/archive/2006/04/11/40412.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web2.0:AJAX的使用(XMLHttpRequest简介)</title><link>http://www.blogjava.net/swingboat/archive/2005/12/30/26028.html</link><dc:creator>swingboat</dc:creator><author>swingboat</author><pubDate>Fri, 30 Dec 2005 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/swingboat/archive/2005/12/30/26028.html</guid><wfw:comment>http://www.blogjava.net/swingboat/comments/26028.html</wfw:comment><comments>http://www.blogjava.net/swingboat/archive/2005/12/30/26028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/swingboat/comments/commentRss/26028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/swingboat/services/trackbacks/26028.html</trackback:ping><description><![CDATA[<FONT color=#0000ff>一、XMLHttpRequest对象的历史<BR>XMLHttpRequest类首先由Internet Explorer以ActiveX对象引入，被称为XMLHTTP。 后来Mozilla、Netscape、Safari和其他浏览器也提供了<BR>XMLHttpRequest类，不过它们创建XMLHttpRequest类的方法不同。IE的版本不同，创建XMLHttpRequest也不同。</FONT> <BR><FONT color=#0000ff><BR>二、XMLHttpRequest对象创建方法<BR>IE:<BR>xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP.3.0"); //3.0或4.0, 5.0 <BR>xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP");<BR>xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP");<BR>Other:<BR>xmlhttp_request = new XMLHttpRequest();<BR><BR></FONT><FONT color=#0000ff>如果服务器的响应没有XML mime-type header，某些Mozilla浏览器可能无法正常工作。 为了解决这个问题，如果服务器响应的header不是<BR>text/xml，可以调用其它方法修改该header。<BR><BR></FONT><FONT color=#0000ff>xmlhttp_request = new XMLHttpRequest();<BR>xmlhttp_request.overrideMimeType('text/xml');</FONT><FONT color=#0000ff><BR>三、XMLHttpRequest对象的处理过程。<BR>1.发送远程请求<BR>　　　<BR>xmlhttp_request.open('GET', URL, true);<BR>xmlhttp_request.send(null);<BR><BR>open()：<BR>第一个参数是HTTP请求方式—GET，POST或任何服务器所支持的您想调用的方式。 按照HTTP规范，该参数要大写；否则，某些浏览器(如Firefox)可能无法处理请求。 <BR>第二个参数是请求页面的URL。<BR>第三个参数设置请求是否为异步模式。如果是TRUE，JavaScript函数将继续执行，而不等待服务器响应。这就是"AJAX"中的"A"(异步)。<BR><BR>2.响应结束后，处理函数设置<BR><BR>xmlhttp_request.onreadystatechange =FunctionName;<BR>FunctionName是用JavaScript创建的函数名，注意不要写成FunctionName()，当然我们也可以直接将JavaScript代码创建在onreadystatechange之后，例如：<BR>xmlhttp_request.onreadystatechange = function(){<BR>// JavaScript代码段<BR>};<BR><BR>3.响应后状态<BR>只有当一个完整的服务器响应已经收到了，函数才可以处理该响应。XMLHttpRequest 提供了readyState属性来对服务器响应进行判断。<BR>readyState的取值如下： <BR>　　0 (未初始化) <BR>　　1 (正在装载) <BR>　　2 (装载完毕) <BR>　　3 (交互中) <BR>　　4 (完成)<BR>所以只有当readyState=4时，一个完整的服务器响应已经收到了，函数才可以处理该响应。<BR><BR>if (http_request.readyState == 4) {<BR>// 收到完整的服务器响应<BR>} else {<BR>// 没有收到完整的服务器响应<BR>}<BR><BR>4.响应后返回值<BR>有两种方式可以得到这些数据：<BR>(1) 以文本字符串的方式返回服务器的响应 <BR>(2) 以XMLDocument对象方式返回响应 <BR>eg:<BR>var response = xmlhttp_request.responseXML.documentElement;<BR>var result = response.getElementsByTagName('result')[0].firstChild.data;//返回result节点数据<BR>if(result ==-2){<BR>document.getElementById('message').innerHTML = "用户名"+document.getElementById('163id').value+"尚未注册";<BR>}<BR>else if(result ==-1){<BR>document.getElementById('message').innerHTML = "对不起,用户名"+document.getElementById('163id').value+"已经注册";<BR>}<BR><BR>四、XMLHttpRequest对象属性<BR>onreadystatechange 状态改变的事件触发器<BR>readyState 对象状态(integer):<BR>0 = 未初始化<BR>1 = 读取中<BR>2 = 已读取<BR>3 = 交互中<BR>4 = 完成<BR>responseText 服务器进程返回数据的文本版本<BR>responseXML 服务器进程返回数据的兼容DOM的XML文档对象<BR>status 服务器返回的状态码, 如：404 = "文件末找到" 、200 ="成功"<BR>statusText 服务器返回的状态文本信息<BR><BR>五、XMLHttpRequest对象方法<BR>abort() 停止当前请求<BR>getAllResponseHeaders() 作为字符串返问完整的headers<BR>getResponseHeader("headerLabel") 作为字符串返问单个的header标签<BR>open("method","URL"[,asyncFlag[,"userName"[, "password"]]]) 设置未决的请求的目标 URL, 方法, 和其他参数<BR>send(content) 发送请求<BR>setRequestHeader("label", "value") 设置header并和请求一起发送<BR><BR>六、附录<BR>HTTP 1.1支持的状态代码<BR>100 Continue 初始的请求已经接受，客户应当继续发送请求的其余部分<BR>101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议<BR>200 OK 一切正常，对GET和POST请求的应答文档跟在后面。<BR>201 Created 服务器已经创建了文档，Location头给出了它的URL。 <BR>202 Accepted 已经接受请求，但处理尚未完成。 <BR>203 Non-Authoritative Information 文档已经正常地返回，但一些应答头可能不正确，因为使用的是文档的拷贝 <BR>204 No Content 没有新文档，浏览器应该继续显示原来的文档。如果用户定期地刷新页面，而Servlet可以确定用户文档足够新，这个状态代码是很有用的<BR>205 Reset Content 没有新的内容，但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容<BR>206 Partial Content 客户发送了一个带有Range头的GET请求，服务器完成了它<BR>300 Multiple Choices 客户请求的文档可以在多个位置找到，这些位置已经在返回的文档内列出。如果服务器要提出优先选择，则应该在Location应答头指明。 <BR>301 Moved Permanently 客户请求的文档在其他地方，新的URL在Location头中给出，浏览器应该自动地访问新的URL。 <BR>302 Found 类似于301，但新的URL应该被视为临时性的替代，而不是永久性的。 <BR>303 See Other 类似于301/302，不同之处在于，如果原来的请求是POST，Location头指定的重定向目标文档应该通过GET提取<BR>304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求（一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档）。服务器告诉客户，原来缓冲的文档还可以继续使用。 <BR>305 Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取<BR>307 Temporary Redirect 和302（Found）相同。许多浏览器会错误地响应302应答进行重定向，即使原来的请求是POST，即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因，HTTP 1.1新增了307，以便更加清除地区分几个状态代码：当出现303应答时，浏览器可以跟随重定向的GET和POST请求；如果是307应答，则浏览器只能跟随对GET请求的重定向。 <BR>400 Bad Request 请求出现语法错误。 <BR>401 Unauthorized 客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头，浏览器据此显示用户名字/密码对话框，然后在填写合适的Authorization头后再次发出请求。 <BR>403 Forbidden 资源不可用。<BR>404 Not Found 无法找到指定位置的资源<BR>405 Method Not Allowed 请求方法（GET、POST、HEAD、DELETE、PUT、TRACE等）对指定的资源不适用。<BR>406 Not Acceptable 指定的资源已经找到，但它的MIME类型和客户在Accpet头中所指定的不兼容<BR>407 Proxy Authentication Required 类似于401，表示客户必须先经过代理服务器的授权。<BR>408 Request Timeout 在服务器许可的等待时间内，客户一直没有发出任何请求。客户可以在以后重复同一请求。 <BR>409 Conflict 通常和PUT请求有关。由于请求和资源的当前状态相冲突，因此请求不能成功。<BR>410 Gone 所请求的文档已经不再可用，而且服务器不知道应该重定向到哪一个地址。它和404的不同在于，返回407表示文档永久地离开了指定的位置，而404表示由于未知的原因文档不可用。 <BR>411 Length Required 服务器不能处理请求，除非客户发送一个Content-Length头。 <BR>412 Precondition Failed 请求头中指定的一些前提条件失败<BR>413 Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求，则应该提供一个Retry-After头 <BR>414 Request URI Too Long URI太长 <BR>416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的Range头<BR>500 Internal Server Error 服务器遇到了意料不到的情况，不能完成客户的请求<BR>501 Not Implemented 服务器不支持实现请求所需要的功能。例如，客户发出了一个服务器不支持的PUT请求 <BR>502 Bad Gateway 服务器作为网关或者代理时，为了完成请求访问下一个服务器，但该服务器返回了非法的应答 <BR>503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如，Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头 <BR>504 Gateway Timeout 由作为代理或网关的服务器使用，表示不能及时地从远程服务器获得应答 <BR>505 HTTP Version Not Supported 服务器不支持请求中所指明的HTTP版本<BR></FONT><A class=titlelink id=Editor_Results_rprSelectionList__ctl1_LinkTitle href="/swingboat/archive/2005/12/28/25753.html"><FONT color=#000000></FONT></A><img src ="http://www.blogjava.net/swingboat/aggbug/26028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/swingboat/" target="_blank">swingboat</a> 2005-12-30 11:43 <a href="http://www.blogjava.net/swingboat/archive/2005/12/30/26028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web2.0:AJAX的使用(DWR Framework 二)：制作简单的Apartment管理</title><link>http://www.blogjava.net/swingboat/archive/2005/12/28/25753.html</link><dc:creator>swingboat</dc:creator><author>swingboat</author><pubDate>Wed, 28 Dec 2005 09:08:00 GMT</pubDate><guid>http://www.blogjava.net/swingboat/archive/2005/12/28/25753.html</guid><wfw:comment>http://www.blogjava.net/swingboat/comments/25753.html</wfw:comment><comments>http://www.blogjava.net/swingboat/archive/2005/12/28/25753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/swingboat/comments/commentRss/25753.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/swingboat/services/trackbacks/25753.html</trackback:ping><description><![CDATA[一、DWR环境配置以及数据库设置<br />二、Apartment的VO设置<br />三、DAO层对数据的操作<br />四、dwr.xml配置<br />五、javascript函数编写<br />六、总结<img src ="http://www.blogjava.net/swingboat/aggbug/25753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/swingboat/" target="_blank">swingboat</a> 2005-12-28 17:08 <a href="http://www.blogjava.net/swingboat/archive/2005/12/28/25753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web2.0:AJAX的使用(DWR Framework 一)：制作Web进度条</title><link>http://www.blogjava.net/swingboat/archive/2005/12/28/25741.html</link><dc:creator>swingboat</dc:creator><author>swingboat</author><pubDate>Wed, 28 Dec 2005 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/swingboat/archive/2005/12/28/25741.html</guid><wfw:comment>http://www.blogjava.net/swingboat/comments/25741.html</wfw:comment><comments>http://www.blogjava.net/swingboat/archive/2005/12/28/25741.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/swingboat/comments/commentRss/25741.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/swingboat/services/trackbacks/25741.html</trackback:ping><description><![CDATA[一、Ajax简介<br />Adaptive Path公司的Jesse James Garrett这样定义Ajax：<br />Ajax不是一种技术。实际上，它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.基于CSS标准的表示； <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.使用Document Object Model进行动态显示和交互； <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.使用XMLHttpRequest与服务器进行异步通信； <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.使用JavaScript绑定一切。<br />Ajax= Asynchronous JavaScript + XML&nbsp;<br /><br />二、常用的几种Ajax框架<br />&nbsp;&nbsp; 1.DWR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;　---- <a href="http://getahead.ltd.uk/dwr/">http://getahead.ltd.uk/dwr/</a> <br />&nbsp;&nbsp; 2.JSon-Rpc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---- <a href="http://oss.metaparadigm.com/jsonrpc/">http://oss.metaparadigm.com/jsonrpc/</a><br />&nbsp;&nbsp; 3.echo2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---- <a href="http://www.nextapp.com/platform/echo2/echo/">http://www.nextapp.com/platform/echo2/echo/</a><br />&nbsp;&nbsp; 4.backbase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---- <a href="http://www.backbase.com">http://www.backbase.com</a><br />&nbsp;&nbsp; 右边网址有具体的说明：<a href="http://www.51cto.com/html/2005/1222/15373.htm">http://www.51cto.com/html/2005/1222/15373.htm</a><br /><br />三、DWR使用说明。<br />示例：在页面中做个进度条，点击&ldquo;install&rdquo;按钮，进度条开始递增。进度数据是从后台获取。&nbsp;<br /><br />1.配置DWR环境。<br />在Eclipse中新建一个Web Project（MyEclipse\J2ee Projects\Web Project),引入dwr-0.9.2b.jar包，修改WEB-INF\web.xml文件，<br />配置dwr-invoker servlet。如下：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;display-name&gt;DWR Servlet&lt;/display-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;Direct Web Remoter Servlet&lt;/description&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;debug&lt;/param-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;true&lt;/param-value&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;<br /><br />2.编写递增类Progress。此类只有一个方法getProgress，获取递增的数据。如下：<br />&nbsp;&nbsp; package dwr.sample;<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; import java.io.BufferedReader;<br />&nbsp;&nbsp; import java.io.FileReader; <br />&nbsp;&nbsp; public class Progress {<br />&nbsp;&nbsp;&nbsp;&nbsp; public int getProgress(int nowProgress){&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int nowValue=nowProgress+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; return nowValue;<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp; }<br /><br />3.配置dwr.xml文件。此文件和web.xml位于同一目录下。<br />&nbsp;&nbsp; &lt;!DOCTYPE dwr PUBLIC<br />&nbsp;&nbsp;&nbsp; &quot;-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN&quot;<br />&nbsp;&nbsp;&nbsp; &quot;<a href="http://www.getahead.ltd.uk/dwr/dwr10.dtd">http://www.getahead.ltd.uk/dwr/dwr10.dtd</a>&quot;&gt;<br />&nbsp;&nbsp; &lt;dwr&gt;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;allow&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;create creator=&quot;new&quot; javascript=&quot;ProgressBar&quot; &gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name=&quot;class&quot; value=&quot;dwr.sample.Progress&quot;/&gt;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;include method=&quot;getProgress&quot;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/create&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/allow&gt;<br />&nbsp;&nbsp; &lt;/dwr&gt;<br /><br />4.编写index.htm文件。<br />a、引入js文件。首先引入dwr自己的两个js文件：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script src='dwr/engine.js'&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script src='dwr/util.js'&gt;&lt;/script&gt;<br />在dwr.xml中我们配置了一个名为&quot;ProgressBar&quot;的create 。dwr会在dwr/interface下产生一个ProgressBar.js文件。<br />在ProgressBar.js文件中，有一个javascript对象：ProgressBar，ProgressBar对象完成了和后台javabean：dwr<br />.sample.Progress的匹配。引入ProgressBar.js文件：<br />　　　&lt;script src='dwr/interface/ProgressBar.js'&gt;&lt;/script&gt;<br /><br />b. 编写显示进度的HTML文本:<br />&nbsp;&nbsp;&nbsp; &lt;TABLE style=&quot;width:700;height=&quot;50&quot; border=&quot;1&quot; &gt;<br />&nbsp; &nbsp;&nbsp;&nbsp; &lt;TR&gt;<br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TABLE&nbsp; border=&quot;0&quot; style=&quot;width:0%;height:100%&quot; id=&quot;ProgressBar&quot;&gt;<br />&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; &lt;td bgcolor=&quot;#000099&quot;&gt;&amp;nbsp;&lt;/td&gt;<br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/TR&gt;<br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/TABLE&gt;<br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />&nbsp; &nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/TABLE&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--点击Install,进度条开始跑动&nbsp; --&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;button&quot; value=&quot;Install&quot; onclick=&quot;doProgress()&quot;&gt;　<br /><br />c. 编写doProgress函数<br />　function doProgress(){<br />　&nbsp;&nbsp; //获取当前进度条的值，按百分比计算　　　<br />&nbsp; &nbsp;　var width=$(&quot;ProgressBar&quot;).style.width;<br />　　//去掉进度条值后面的&quot;%&quot;<br />&nbsp; &nbsp;　var scaleWidth=width.substring(0,width.length-1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//当进度条值为100的时候，停止跑动<br />&nbsp;&nbsp;&nbsp; 　if(scaleWidth!=100){<br />　　&nbsp;&nbsp;&nbsp; //调用ProgressBar.js中的ProgressBar.getProgress函数<br />&nbsp;&nbsp;&nbsp; &nbsp;　　ProgressBar.getProgress(scaleWidth,updateProgress);<br />//说明：javabean:Progress方法getProgress，其实它只有一个输入参数，一个返回参数。而javascript的ProgressBar.getProgress方法有两个参数。dwr在mapping方法的时候，对于返回值，它采用的是回调函数的方式。所以对于ProgressBar.getProgress方法的第二个参数是一个函数指针。这里是updateProgress函数。　<br />&nbsp;&nbsp;&nbsp; 　}<br />&nbsp; 　}<br />&nbsp; 　function updateProgress(progress){<br />　&nbsp;&nbsp;&nbsp; &nbsp;//设置进度条的值<br />&nbsp; &nbsp;　&nbsp; $(&quot;ProgressBar&quot;).style.width=progress+&quot;%&quot;;<br />　　 //进度条继续跑动<br />&nbsp; &nbsp;　 doProgress();<br />&nbsp;&nbsp;&nbsp;&nbsp; }
<p>&nbsp;</p><img src ="http://www.blogjava.net/swingboat/aggbug/25741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/swingboat/" target="_blank">swingboat</a> 2005-12-28 16:35 <a href="http://www.blogjava.net/swingboat/archive/2005/12/28/25741.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>