Llenar una matriz de Javascript usando MYSQL y JSP

Estoy tratando de recibir datos de una base de datos MySQL usando un .jsp, poner esos datos en una matriz y luego enviar esa matriz a javascript y usar la matriz para completar un gráfico hecho a través de d3.js. Investigué un poco sobre cómo hacer la parte .jsp, pero realmente no tiene mucho sentido para mí. También encontré poco, si es que encontré algo, sobre cómo pasar de java a javascript. Esto es lo que tengo actualmente:

<%@ page language="java" import="java.sql.*"%>

<html>
    <head>
        <title>D3 Test</title>
        <script type="text/javascript" src="d3/d3.v2.js"></script>
            <style type="text/css">
        </style>
    </head>
    <body>

    <%

    Connection con=null;
    ResultSet rst=null;
    Statement stmt=null;

    try{
        String url="jdbc:mysql://localhost:3306/usermaster?    user=root&password=7rubA5Ra";

        int i=1;
        con=DriverManager.getConnection(url);
stmt=con.createStatement();
rst=stmt.executeQuery("select * from test ");

%>
    <script type="text/javascript">

        var dataset = [ 7, 12, 15, 21, 23, 27, 24, 20, 17, 15,
            12, 14, 17, 22, 20, 19, 18, 20, 25, 27 ];
        var w = 500;
        var h = 100;
        var barPadding = 1;
        var svg = d3.select("body")
                    .append("svg")
                    .attr("width", w)
                    .attr("height", h);
        svg.selectAll("rect")
            .data(dataset)
            .enter()
            .append("rect")
            .attr("id", "rect1")
            .attr("x", function(d, i) {
                    return i * (w / dataset.length);
                })
            .attr("y", function(d) {
                return h - d*4;
            })
            .attr("width", w/ dataset.length - barPadding)
            .attr("height", function(d) {
                return d * 4;
            })
            .attr("fill", function(d) {
                return "rgb(0, 0, " + (d * 10) + ")";
            });

        /*svg.selectAll("rect")
            .data(dataset2)
            .enter()
            .append("rect")
            .attr("id", "rect2")
            .attr("x", function(d, i) {
                    return i * (w / dataset2.length);
            })
            .attr("y", function(d) {
                return h - d*4;
            })
            .attr("width", w/ dataset2.length - barPadding)
            .attr("height", function(d) {
                return d * 4;
            })
            .attr("fill", function(d) {
                return "rgb(0, 100, " + (d * 10) + ")";
            });*/

        svg.selectAll("text")
            .data(dataset)
            .enter()
            .append("text")
            .text(function(d) { 
                return d;
            })
            .attr("x", function(d, i) {
                return i * (w / dataset.length) + 5;
            })
            .attr("y", function(d) { 
                return h - (d * 4) + 15;
            })
            .attr("font-family", "sans-serif")
            .attr("font-size", "11px")
            .attr("fill", "white");
    </script>
</body>

Realmente solo necesito que alguien me señale en la dirección correcta. Quiero que la información de la base de datos se coloque en el conjunto de datos variable.

Gracias, EmptyBox

preguntado el 22 de mayo de 12 a las 19:05

¿Usas esta contraseña en más de un lugar? :) -

@Andreas Es una contraseña generada aleatoriamente que uso para desarrollo/cosas que no necesito guardar para mí:

2 Respuestas

Agregue las etiquetas JSP alrededor del lugar donde desea incrustarlo en el JavaScript.

 var dataset = [ 
    <% while (rst!=null && rst.next()) { %>
       <%=rst.getInt("<column name>")%>, 
    <% } %>
    ];

contestado el 24 de mayo de 12 a las 20:05

¿Hay algo que deba importar para usar esas declaraciones? Obtengo un 'método no definido para el tipo ResultSet para ambas declaraciones. - user1410980

Lo siento, solo estaba usando pseudocódigo para el código ResultSet. Las funciones correctas son: while (rst != null && rst.next()) y rst.getInt(" ") - diabloazul2k

¡Oh jaja! Gracias. Realmente estoy luchando con esto. Debería poder hacerlo funcionar ahora. ¡Gracias de nuevo! - user1410980

Lo mejor que puede hacer en su caso es Biblioteca JSON.

Primero: en un parche de JSP página recuperar todos los datos de la base de datos a través de ResultSet.
Segundo: manténgalos en un jsonmatriz y enviar la matriz a otra página.

Por último: Reciba el JsonArray en una función de JavaScript y use los elementos para completar
en cualquier lugar de la página.

contestado el 23 de mayo de 12 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.