Avatar billede mik28 Seniormester
26. april 2006 - 20:26 Der er 1 løsning

Servlet som returnerer XML

Hej Eksperter,

Jeg har et problem som jeg meget gerne vil finde en løsning på. Det handler om en servlet der skal give mig noget XML. Jeg får en intern serverfejl. Jeg ville mene at servletten skulle se således ud:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import util.*;
import java.util.*;

public class Varer extends HttpServlet
    {
       
        public void doPost(HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
        PrintWriter        out;
        response.setContentType("text/xml");
        StringBuffer buffer = new StringBuffer();

// Bruges hvis jeg vil have et argument med (xmlhttp.send(VÆRDI))
        BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
        String result = reader.readLine();

       
        out = response.getWriter();
        buffer.append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
        buffer.append("<varer>");
       
   
   
        Databaseforbindelsemysqlprepared d = new Databaseforbindelsemysqlprepared("com.mysql.jdbc.Driver", "jdbc:mysql://192.168.1.15/capa", "capa", "123456789diana");
       
        Vector vi = new Vector();
        // vi.addElement(user);
        StringBuffer bu = new StringBuffer();
                    bu.append("select * from varer");
                           
        ResultSet rs = d.select(bu.toString(), vi);
       
        try {
       
                while (rs.next()) {
               
                buffer.append("<nr>");
                buffer.append("<navn>"+rs.getString("navn")+"</navn>");
                buffer.append("<antal>"+rs.getString("antal")+"</antal>");
                buffer.append("</nr>");
                }
       
        buffer.append("</varer>");
       
        } catch (SQLException s) {
                buffer.append("<h3>SQL fejl: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }
       
        out.println(buffer.toString());
        out.close();   
        d.close();
        }

}


Jeg bruger så et Javascript til at hente data således:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>



<head>
<title>Web-oasen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>
<h2>WEB-OASEN.DK</h2>
<span id="indhold"></span>
<script type="text/javascript">

 
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   
    xmlhttp.open("POST","http://web-oasen.dk/Varer",false)
    xmlhttp.send("<time>3:48</time>")

    var dom = xmlhttp.responseXML;
   
    var html = new Array();
               
    html[html.length] = "<table style=\"width:200px;\">\n";
   
    var x=dom.getElementsByTagName("nr").length;
 
    for(i=0;i<x;i++) {
    var navn = dom.getElementsByTagName("navn").item(i).firstChild.nodeValue;
    var antal = dom.getElementsByTagName("antal").item(i).firstChild.nodeValue;
   
    html[html.length] = "<tr><td style=\"width:100px;\">" + navn + "</td><td style=\"width:100px;\">" + antal + "</td></tr>\n";

    }

    html[html.length] = "</table>\n";
               
    var allhtml = html.join("\n");
    document.getElementById("indhold").innerHTML = allhtml;

</script>

</body>
</html>


Hvorfor er det lige at det ikke virker?
Avatar billede mik28 Seniormester
27. april 2006 - 09:38 #1
Grunden til at det ikke virkede var ikke koden men en fejl i min opsætning af serveren.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester