Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/11/2012, 09:45
Avatar de rosonator
rosonator
 
Fecha de Ingreso: noviembre-2012
Ubicación: Bilbao
Mensajes: 49
Antigüedad: 11 años, 5 meses
Puntos: 7
Mandar JSON a .JSP

Buenas tardes!!!

Tengo un script JavaScript en el que he recogido un array. Mi intención es guardar la información relativa a ese array en una base de datos MySQL. Para ello, parece ser, debo cargarlo en un JSON y enviarlo al .jsp, que deberá parsearlo y enviárselo a un .java que lo meterá en la BD. Por supuesto, no me funciona nada, y como podréis ver a continuación, soy primerizo en esto del JSON y estoy más perdido que Steven Seagal en una fiesta de pijamas. Pero es que también tiene tela la cosa, jeje.

Bueno, así es como llamo en el script JavaScript:

.JS
Código:
var myJsonString = JSON.stringify(rankingLocal);	
		var url = "XXX.jsp";
                request = new XMLHttpRequest();
		request.open("POST", url, true);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		request.send(myJsonString);


Y así como lo recibo en el .JSP

.JSP
Código:
<%@page contentType="application/json" pageEncoding="UTF-8"%>
<%@page import="XXXXXXXXXXXXXXXXX.User" %>
<%
            User u = null;
            u = new User();
            
            String nombre;
            Int puntuacion;
            
            JSONObject arr = (JSONObject) JSONValue.parse(http_request.responseText);
            
            for(int i=1;i<arr.size();i++) {
                nombre = arr.getString(i-1);   
                puntuacion = (arr.getString(i);
            
            u.register(nombre, puntuacion);
            }
%>

Por último, aunque no creo que sea relevante, así accedo a la BD:

.JAVA

Código:
public User() {
        //this.setUrl("XXX/" + bd);
        this.setUrl("XXX");
        this.setDriver("XXX");
        this.setNombre("XXX");
        this.setPassword("XXX");
        this.setTable("XXX");
    }

 public void register(String nombre, Integer puntuacion) {
        try {
            this.crearConexion();
            this.setSql("INSERT INTO ranking SET Nombre = ?, Puntuacion = ?;");
            this.setPs(this.getCon().prepareStatement(this.getSql()));
            this.getPs().setString(1, nombre);
            this.getPs().setInt(2, puntuacion); 
            this.getPs().executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            this.cerrarConexion();
        }
    }

Por si ayuda, el error que ahora mismo recibo es el siguiente:

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Espero que con el caso expuesto al completo podáis ayudarme a tener un mejor enfoque de esta tecnología, de aquí en adelante tendré que usarla mucho y me tiene basante preocupado la manera en que sigo pez por más que intento pillarlo.

Muchas gracias de antemano,

Alexander.

Última edición por caricatos; 20/11/2012 a las 02:51 Razón: petición del usuario