Foros del Web » Programación para mayores de 30 ;) » Java »

respuesta en servlets

Estas en el tema de respuesta en servlets en el foro de Java en Foros del Web. hola soy nueva con los servlets y he llegado a un punto en el que no se seguir. Tengo una pagina HTML/Ajax que externamente, mediante ...
  #1 (permalink)  
Antiguo 27/11/2012, 12:11
Avatar de laqmaslocaesta  
Fecha de Ingreso: octubre-2012
Mensajes: 26
Antigüedad: 12 años
Puntos: 1
respuesta en servlets

hola



soy nueva con los servlets y he llegado a un punto en el que no se seguir.

Tengo una pagina HTML/Ajax que externamente, mediante JSON, llama a una aplicación creada en servlet (eclipse), que se conecta a una base de datos PostgreSQL. (El sistema tiene que ser asi, porque se me pide como requisito)

El sistema es un ubuntu, apache2, tomcat7

He configurado las cabeceras en el Apache2 para permitir el cross-site

He probado la conexión a base de datos y funciona perfectamente.

El codigo del servlet es:

Código:
package servlets;

import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;

import com.google.gson.Gson;

import bd.conexion;
import Mensaje.Mensaje;
import Alumno.Alumno;


/**
 * Servlet implementation class Listar
 */
@WebServlet("/Listar")
public class Listar extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     
    public Listar() {
        super();
        // TODO Auto-generated constructor stub
    }*/

	   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    //String s="Hola Mundo";
    
    response.setContentType("application/json");
    response.setHeader("Access-Control-Allow-Origin", "*");
    //PrintWriter out=response.getWriter();//???
    String jsonOuput;
    Mensaje sms;
    try{
    	//Class.forName("org.postgresql.Driver").newInstance();//???
		conexion conn = new conexion();
		JOptionPane.showMessageDialog(null,"Conexion Establecida");
    	String consulta="select * from alumno";
    	ResultSet rs=conn.getStmt().executeQuery(consulta);
    	
    	if(rs!=null){
    		ArrayList<Alumno> array= new ArrayList<Alumno>();
    		while(rs.next()){
    			String nombre=rs.getString("nombre");
    			String apellido=rs.getString("apellido");
    			int edad=rs.getInt("edad");
    			String correo=rs.getString("correo");
    			array.add(new Alumno(nombre,apellido,edad,correo));
    		}
    		sms=new Mensaje(1,array);
    	}else{
    	
    		 sms=new Mensaje(0,"No existen alumnos en la base de datos");
    		
    	}
    	Gson gson=new Gson();
    	jsonOuput=gson.toJson(sms);
       // JOptionPane.showMessageDialog(null,jsonOuput); 
    	conn.cerrarConexion();
   
    	//response.getWriter().print(jsonOuput);
    }catch(Exception er){
    	JOptionPane.showMessageDialog(null,"Error de conexión");
    }
     

    }
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		processRequest(request,response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		processRequest(request,response);
	}

}
Descomentando la linea :

Código:
    	//response.getWriter().print(jsonOuput);
He podido probar llamando desde el navegador que obtengo lo deseado para que el Ajax, lo interprete.

Ahora lo que quiero conseguir es que en la respuesta se introduzca el valor de la variable jsonOuput, y que llegue a Ajax, pero soy incapaz de conseguirlo.

Alguien me puede orientar por favor.

el codigo Ajax es:

Código:
<!DOCCTYPE html>
<html>
<head>
<title>Pagina Ejemplo1</title>
<script language="javascript">

function consulta()
{

var xmlhttp;    
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  { 
  if (xmlhttp.readyState==4)
    {
	alert(xmlhttp.responseText);
	//Texto a ejecutar cuando llega la respuesta
	var personas=JSON.parse(xmlhttp.responseText);
	//Miraremos que tipo de mensaje nos han enviado
	//tipo 0 = La base de datos esta vacia
	//tipo 1 = Alumnos en la base de datos
	if(personas.tipo==0){
	document.getElementById("txtHint").innerHTML= personas.list;
	}else{//si hemos encontrado el alumno, procedemos a introducirlo en una tabla para mostrarlo
	cont=document.getElementById("txtHint");
		if(cont){
		var longitud=personas.list.length;
		var html="<table border=1 cellspacing=0 cellpadding=5 vspace=20 width=50%><tr>";
		html+="<th>Nombre y Apellido</th>";
		html+="<th>Edad</th>";
		html+="<th>Correo</th>";
		html+="</tr>";
		for(i=0;i<longitud;i++){
		html+="<tr>";
		html+="<td>"+personas.list[i].nombre+"</td>";
		html+="<td>"+personas.list[i].edad+"</td>";
		html+="<td>"+personas.list[i].correo+"</td>";
		html+="</tr>";		
		}
		html+="</table>";
		cont.innerHTML=html;
		}else{
		document.getElementById("txtHint").innerHTML= xmlhttp.responseText;
		}
	document.getElementById('fiel').innerHTML="";
	}
    }
  }

xmlhttp.open("GET","http://192.168.1.37:8080/estudio/Listar",true);
xmlhttp.send();
}




</script>
</head>
<body>

<h2 align=center>Menu de acciones</h2>
</br>
<div id="txtHint"><script>document.write(consulta()); </script></div>
<form >
<fieldset id="fiel">
</fieldset>
</form>
</body>
</html>
Muchas Gracias
  #2 (permalink)  
Antiguo 27/11/2012, 17:21
Avatar de laqmaslocaesta  
Fecha de Ingreso: octubre-2012
Mensajes: 26
Antigüedad: 12 años
Puntos: 1
Respuesta: respuesta en servlets

solucionado

en la frase que destaque, que estaba comentada, descomentarla y cambiar print(x) por write(x) .

saludos

Etiquetas: respuesta, servlets, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:57.