我想利用xmlhttp实现 以下功能:
客户端通过xmlhttp向servlet或jsp发送请求,并发送一个sql语句,然后由servlet接收并执行该sql语句,并产生一个结果集(resultset),并将该结果集转换成XML ( 一定要是XML的形式 )然后返回给客户端,由客户端的javascript进行解析,将数据显示在网页上。整个过程中,客户端的页面是不刷新的。
我对xmlhttp和xml不熟悉,所以麻烦能给出详细的代码,谢谢!!!!!
如果问题解决了,分不够再加啊

解决方案 »

  1.   

    给你个例子,我刚测试通过:
    客户端:
    <html>
    <head>
    <script>
    function Query()
    {
      var xmlDoc, OrderNode, poster, responseRoot;
      xmlDoc=new ActiveXObject("Msxml.DOMDocument");
      xmlDoc.loadXML("<?xml version=\"1.0\"?>"+
                        "<test>"+
                           "<sql>select name from test</sql>"+
                        "</test>");
      poster=new ActiveXObject("Microsoft.XMLHTTP");
      poster.open("POST","http://localhost:8088/XMLHTTPDemo/XMLServlet",false);
      poster.send(xmlDoc);
      if(poster.responseXML!=null)
      {
    for(var i=0;i<poster.responseXML.documentElement.childNodes.length;i++)
    {
    document.writeln(poster.responseXML.documentElement.childNodes(i).text);
    }
      }
      else 
    alert("error!");
    }
    </script>
    </head>
    <body>
    <input type="Button" value="Test" onclick="Query();">
    </body>
    </html>
    服务端(servelet)
    package tt.com;
    import java.io.*;
    import java.sql.*;
    import javax.xml.parsers.*;import org.w3c.dom.*;import javax.servlet.ServletException;
    import javax.servlet.http.*;
    public class XMLServlet extends HttpServlet
    { @Override
    protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException 
    {
    try
    {
    InputStream is=arg0.getInputStream();
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    DocumentBuilder builder=factory.newDocumentBuilder();
    Document doc=builder.parse(is);
    Element root=doc.getDocumentElement();
    String sql=root.getFirstChild().getTextContent();
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
    String url="jdbc:microsoft:sqlserver://XIAOHUASZ\\XIAOHUASZ;DatabaseName=XHBookShop";
    String user="xiaohua";
    String password="";
    Connection conn=DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement();
    ResultSet rs=stmt.executeQuery(sql);
    arg1.setContentType("text/xml");
    PrintWriter out=arg1.getWriter();
    out.println("<?xml version=\"1.0\"?><test>");
    while(rs.next())
    {
    String s1=rs.getString(1);
    out.println("<name>"+s1+"</name>");
    }
    out.println("</test>");
    rs.close();
    stmt.close();
    conn.close();
    out.close();
    }
    catch(Exception e){e.printStackTrace();}
    }}
      

  2.   

    不行啊
    i=0;i<poster.responseXML.documentElement.childNodes.length;i++)
    这里出错,poster.responseXML.documentElement为空或者不是对象
    怎么回事??
      

  3.   

    我用的web服务器是weblogic 7
      

  4.   

    应该没问题的!你把详细错误贴上来看看!
    我的配置是:Eclipse3.1+tomcatpluginV3.1.0+Tomcat 5.5+JDK1.5