﻿<?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-不能停止-随笔分类-DONET</title><link>http://www.blogjava.net/josephguan/category/4019.html</link><description>运动，游玩，学习，我的爱不能停止</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:08:09 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:08:09 GMT</pubDate><ttl>60</ttl><item><title>xmlhttp初体验 </title><link>http://www.blogjava.net/josephguan/archive/2005/10/26/16898.html</link><dc:creator>快乐的射手</dc:creator><author>快乐的射手</author><pubDate>Wed, 26 Oct 2005 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/josephguan/archive/2005/10/26/16898.html</guid><wfw:comment>http://www.blogjava.net/josephguan/comments/16898.html</wfw:comment><comments>http://www.blogjava.net/josephguan/archive/2005/10/26/16898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josephguan/comments/commentRss/16898.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josephguan/services/trackbacks/16898.html</trackback:ping><description><![CDATA[<P>太久没有研究过新技术了.作为一个程序员,我觉得很惭愧.老早就想看看关于xmlhttp的技术了,今天总算有点时间,做个一个最初的体验.马上就爱上了它.<BR>如果你想不刷新页面就可以与后台进行数据交互,或者在异构系统之间交换数据,xmlhttp技术是个不错的选择.<BR>下面是我的一个很小的体验程序,参考了csdn网友s_phoenix()给人的回贴.<BR>首先建一个tomcat的web项目.</P>
<P>1:-------index.htm文件内容如下:</P>
<P>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;<BR>&lt;HTML&gt;<BR>&lt;HEAD&gt;<BR>&lt;TITLE&gt; New Document &lt;/TITLE&gt;<BR>&lt;META NAME="Generator" CONTENT="EditPlus"&gt;<BR>&lt;META NAME="Author" CONTENT=""&gt;<BR>&lt;META NAME="Keywords" CONTENT=""&gt;<BR>&lt;META NAME="Description" CONTENT=""&gt;<BR>&lt;/HEAD&gt;</P>
<P>&lt;BODY&gt;<BR>&lt;script language="javascript"&gt;<BR>var XML="&lt;root&gt;&lt;test&gt;李春雷&lt;/test&gt;&lt;test&gt;毛泽东&lt;/test&gt;&lt;/root&gt;"<BR>var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");<BR>var xmlDoc=new ActiveXObject("Msxml2.DOMDocument");<BR>function test(){//客户端xml的解析<BR>xmlDoc.loadXML(XML);<BR>if(xmlDoc.parseError.line&gt;0){<BR>throw xmlDoc.parseError.reason;<BR>}<BR>var nodes= xmlDoc.selectNodes("/root/test");<BR>for(var i=0;i&lt;nodes.length;i++){<BR>alert(nodes.item(i).text);<BR>}<BR>}</P>
<P>function action(){//客户端和服务端的通讯<BR>xmlHttp.open("post","<A href='http://127.0.0.1:8888/xmlhttpTest/UrlTestServlet",false'>http://127.0.0.1:8888/xmlhttpTest/UrlTestServlet",false</A>);<BR>xmlHttp.setRequestHeader("context-type","text/xml;charset=utf-8");<BR>xmlHttp.send(XML);<BR>var showstr=xmlHttp.responseText;<BR>alert(showstr);<BR>}</P>
<P>&lt;/script&gt;<BR>&lt;button onclick="test();"&gt;查看将要传输的xml&lt;/button&gt;&lt;br/&gt;<BR>&lt;button onclick="action();"&gt;朝服务器传送xml，并接收服务器回应&lt;/button&gt;<BR>&lt;/BODY&gt;<BR>&lt;/HTML&gt;</P>
<P><BR>2:------------写一个servlet: UrlTestServlet.java</P>
<P>/*<BR>&nbsp;* 创建日期 2005-4-7<BR>&nbsp;*<BR>&nbsp;* TODO 要更改此生成的文件的模板，请转至<BR>&nbsp;* 窗口 － 首选项 － Java － 代码样式 － 代码模板<BR>&nbsp;*/<BR>package com.lcl;</P>
<P>import javax.servlet.*;<BR>import javax.servlet.http.*;<BR>import java.io.*;<BR>import java.util.*;<BR>import org.dom4j.io.*;<BR>import org.dom4j.*;</P>
<P><BR>/**<BR>&nbsp;* @author lcl<BR>&nbsp;*<BR>&nbsp;* TODO 要更改此生成的类型注释的模板，请转至<BR>&nbsp;* 窗口 － 首选项 － Java － 代码样式 － 代码模板<BR>&nbsp;*/</P>
<P>public class UrlTestServlet extends HttpServlet {<BR>private static final String CONTENT_TYPE = "text/xml;charset=utf-8";<BR>//Initialize global variables<BR>public void init() throws ServletException {<BR>}<BR>//Process the HTTP Get request</P>
<P><BR>public void doGet(HttpServletRequest request, HttpServletResponse response)<BR>throws ServletException, IOException {<BR>response.setContentType(CONTENT_TYPE);<BR>request.setCharacterEncoding("utf-8");<BR>PrintWriter out = response.getWriter();<BR>InputStream is=request.getInputStream();</P>
<P>SAXReader reader=new SAXReader();<BR>Document doc=null;<BR>try{<BR>doc=reader.read(is);<BR>} catch(Exception ex){<BR>System.out.println(ex);<BR>}<BR>String[] s= getElementTexts(doc,"test");<BR>out.println("数据交换成功:返回" + s[0] + s[1]);<BR>}</P>
<P>public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<BR>doGet(request,response);<BR>}</P>
<P>private String getElementText(Document doc,String name){<BR>return doc.getRootElement().element(name).getText();<BR>}</P>
<P>private String[] getElementTexts(Document doc,String name){<BR>List l=doc.getRootElement().elements(name);<BR>Iterator it=l.iterator();<BR>List l1=new LinkedList();<BR>while(it.hasNext()){<BR>Element e=(Element)it.next();<BR>l1.add(e.getText());<BR>}<BR>return (String[])l1.toArray(new String[]{});<BR>}</P>
<P>//Clean up resources<BR>public void destroy() {<BR>}<BR>}</P>
<P>3:--------web.xml更改如下(加servlet映射):</P>
<P>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;</P>
<P>&lt;!DOCTYPE web-app<BR>&nbsp;&nbsp;&nbsp; PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"<BR>&nbsp;&nbsp;&nbsp; "<A href="http://java.sun.com/dtd/web-app_2_3.dtd">http://java.sun.com/dtd/web-app_2_3.dtd</A>"&gt;</P>
<P>&lt;web-app&gt;<BR>&nbsp; &lt;display-name&gt;Welcome to Tomcat&lt;/display-name&gt;<BR>&nbsp; &lt;description&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; Welcome to Tomcat<BR>&nbsp; &lt;/description&gt;</P>
<P><BR>&lt;!-- JSPC servlet mappings start --&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;UrlTestServlet&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;com.lcl.UrlTestServlet&lt;/servlet-class&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<BR>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;UrlTestServlet&lt;/servlet-name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/UrlTestServlet&lt;/url-pattern&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;</P>
<P><BR>&lt;!-- JSPC servlet mappings end --&gt;<BR>&nbsp;&lt;welcome-file-list&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/welcome-file-list&gt;<BR>&lt;/web-app&gt;</P>
<P>好了,启动tomcat,访问:http://127.0.0.1:8888/xmlhttpTest/work/(如果你的tomcat端口是8080,就改一下)<BR>看到结果了吧,真的很不错.不用刷新页面,就让htm前台页面和后台进行了一次数据交换.</P>
<P>你甚至可以在不同的服务器之间进行数据交换,比如一个mis系统,和一个gis系统,想整合成一个系统,原先我们是用了一个frame,左边的是mis,右边的是gis,通过javascript在两个系统间交换数据.如果用xmlhttp技术,完全没必要这样了.</P>
<P></P>
<P></P><BR><BR>本文引用通告地址： http://blog.csdn.net/lcllcl987/services/trackbacks/425242.aspx <BR><img src ="http://www.blogjava.net/josephguan/aggbug/16898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josephguan/" target="_blank">快乐的射手</a> 2005-10-26 17:26 <a href="http://www.blogjava.net/josephguan/archive/2005/10/26/16898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XMLHTTP---介绍 (来自冷风.NET)</title><link>http://www.blogjava.net/josephguan/archive/2005/10/21/16289.html</link><dc:creator>快乐的射手</dc:creator><author>快乐的射手</author><pubDate>Fri, 21 Oct 2005 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/josephguan/archive/2005/10/21/16289.html</guid><wfw:comment>http://www.blogjava.net/josephguan/comments/16289.html</wfw:comment><comments>http://www.blogjava.net/josephguan/archive/2005/10/21/16289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/josephguan/comments/commentRss/16289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/josephguan/services/trackbacks/16289.html</trackback:ping><description><![CDATA[<DIV class=postbody>
<DIV>MSXML中提供了Microsoft.XMLHTTP对象，能够完成从数据包到Request对象的转换以及发送任务。 </DIV>
<DIV>创建XMLHTTP对象的语句如下： <BR>Set objXML = CreateObject("Msxml2.XMLHTTP") 或<BR>Set objXML = CreateObject(“Microsoft.XMLHTTP”)<BR>' Or, for version 3.0 of XMLHTTP, use:<BR>' Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP") </DIV>
<DIV>对象创建后调用Open方法对Request对象进行初始化，语法格式为： <BR>poster.open http-method, url, async, userID, password <BR>Open方法中包含了5个参数，前三个是必要的，后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示：&nbsp; <BR>http-method： HTTP的通信方式，比如GET或是 POST <BR>url： 接收XML数据的服务器的URL地址。通常在URL中要指明 ASP或CGI程序 <BR>async： 一个布尔标识，说明请求是否为异步的。如果是异步通信方式(true)，客户机就不等待服务器的响应；如果是同步方式(false)，客户机就要等到服务器返回消息后才去执行其他操作 <BR>userID 用户ID，用于服务器身份验证 <BR>password 用户密码，用于服务器身份验证 </DIV>
<DIV>XMLHTTP对象的Send方法 <BR>用Open方法对Request对象进行初始化后，调用Send方法发送XML数据： <BR>poster.send XML-data <BR>Send方法的参数类型是Variant，可以是字符串、DOM树或任意数据流。发送数据的方式分为同步和异步两种。在异步方式下，数据包一旦发送完毕，就结束Send进程，客户机执行其他的操作；而在同步方式下，客户机要等到服务器返回确认消息后才结束Send进程。 <BR>XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示： <BR>值 说明 <BR>0 Response对象已经创建，但XML文档上载过程尚未结束 <BR>1 XML文档已经装载完毕 <BR>2 XML文档已经装载完毕，正在处理中 <BR>3 部分XML文档已经解析 <BR>4 文档已经解析完毕，客户端可以接受返回消息 </DIV>
<DIV>客户机处理响应信息 <BR>客户机接收到返回消息后，进行简单的处理，基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的： <BR>● responseTxt：将返回消息作为文本字符串； <BR>● responseXML：将返回消息视为XML文档，在服务器响应消息中含有XML数据时使用； <BR>● responseStream：将返回消息视为Stream对象 </DIV>
<DIV><BR>
<DIV>------就是下面这个很简单的JAVASCRIPT函数SEND(STR,URL)---------------</DIV>
<DIV>使用到的是XMLDOM和XMLHTTP对象.用这种技术的好处是:全JS控制,方便/简单,比RDS<BR>或者remote好多了.(前提:服务器端和客户端都必须安装IE5或者更高版本),在俺贴的<BR>那个无刷新在线信息功能使用的也是这种技术.有兴趣的朋友可以看看.. </DIV>
<DIV>function Send(Str,URL) <BR>//STR参数是传入的XML数据,你也可以传入其他文本数据.<BR>//不过这个函数需要服务器端处理之后返回XML数据,你也可以修改一下<BR>//URL参数表示你所要处理数据的ASP文件地址<BR>{<BR>var Http = new ActiveXObject("Microsoft.XMLHTTP") //建立XMLHTTP对象<BR>var Dom = new ActiveXObject("Microsoft.XMLDOM") //建立XMLDOM对象<BR>Http.open("POST",URL,false)<BR>//第一个参数的意思是,用"POST"方式发送数据.可以大到4MB,也可以换为"GET".只能256KB<BR>//第2个参数的意思是数据发送到哪个文件处理<BR>//第3个参数意思是同步或异步方式.TRUE为异步,FALSE为同步<BR>Http.send(Str) //开始发送数据.............嘟嘟..<BR>Dom.async=false //设置为同步方式获取数据<BR>Dom.loadXML(Http.responseText) <BR>//开始获取服务器端处理后返回的数据.我在这里设置必须为XML数据,否则出错.<BR>//你也可以自己修改.使返回的是2进制或者记录集数据.................................<BR>if(Dom.parseError.errorCode != 0) //检查是否发生获取数据时错误<BR>{<BR>delete(Http)<BR>delete(Dom)<BR>return(false)<BR>}<BR>else<BR>{<BR>var Back = Dom.documentElement.childNodes.item(0).text <BR>//得到返回的XML数据,我这里假设处理程序只返回一行XML数据(一个节点)<BR>delete(Http)<BR>delete(Dom)<BR>return(Back) //函数返回数据.......................结束<BR>}<BR>} </DIV>
<DIV>&nbsp;</DIV>
<DIV>VAR CAT = Send("&lt;用户资料&gt;&lt;姓名&gt;谢柠檬&lt;/姓名&gt;&lt;/用户资料&gt;","<A href="http://www.chinaasp.com/VIVA.ASP"><FONT color=#1d58d1>HTTP://WWW.CHINAASP.COM/VIVA.ASP</FONT></A>") //执行函数<BR>IF(CAT == FALSE)<BR>{<BR>ALERT("对不起.处理程序返回的是FALSE.数据处理已经失败........")<BR>}<BR>ELSE<BR>{ <BR>IF(EVAL(CAT))<BR>{<BR>ALERT("OK.数据已经发送成功.兼以处理完成!!!!!!")<BR>}<BR>ELSE<BR>{<BR>ALERT("对不起.处理程序返回的是FALSE.数据处理已经失败........")<BR>}<BR>} </DIV>
<DIV>&nbsp;</DIV>
<DIV>===============================VIVA.ASP============================<BR>ON ERROR RESUME NEXT<BR>DIM BOBO<BR>DIM MOMO<BR>SET BOBO = SERVER.CREATEOBJECT("MICROSOFT.XMLDOM")<BR>BOBO.ASYNC = FALSE<BR>BOBO.LOAD REQUEST<BR>IF BOBO.PARSEERROR.ERRORCODE &lt;&gt; 0 THEN<BR>RESPONSE.WRITE("&lt;程序处理结果&gt;&lt;最终结果&gt;FALSE&lt;/最终结果&gt;&lt;/程序处理结果&gt;")<BR>ELSE<BR>SET MOMO = BOBO.DOCUMENTELEMENT<BR>IF MOMO.CHILDNODES.ITEM(0).TEXT = "谢柠檬" THEN<BR>RESPONSE.WRITE("&lt;程序处理结果&gt;&lt;最终结果&gt;TRUE&lt;/最终结果&gt;&lt;/程序处理结果&gt;")<BR>ELSE<BR>RESPONSE.WRITE("&lt;程序处理结果&gt;&lt;最终结果&gt;FALSE&lt;/最终结果&gt;&lt;/程序处理结果&gt;")<BR>END IF<BR>END IF<BR>SET BOBO = NOTHING </DIV></DIV></DIV><img src ="http://www.blogjava.net/josephguan/aggbug/16289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/josephguan/" target="_blank">快乐的射手</a> 2005-10-21 14:57 <a href="http://www.blogjava.net/josephguan/archive/2005/10/21/16289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>