Validar un usuario con ajax y servlets

anticlick
30 de Julio del 2009
Que tal colegas, espero me den una manito:


Lo que deseo es actualizar el contenido de una pagina jsp, utilizando java script y ajax

1 he utilizado el evento onkeyup() y este manda las consultas al servlet pero es aqui en donde se presenta el problema puesto que creo que el problema esta en que el servlet no esta mandando de manera adecuada la informacion al jsp o en el jsp no se esta tratanto la informacion mandada por el servlet de manera adecuada .

espero me den una manito

gracias



******* prueba.jsp ************


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Funciona</title>

<script type="text/javascript">

var req;

function validate() {
var idField = document.getElementById("userid");
var url = "ValidateServlet?id=" + encodeURIComponent(idField.value);
if (typeof XMLHttpRequest != "undefined") {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.open("GET", url, true);
req.onreadystatechange = callback;
req.send(null);
}



function callback() {
if (req.readyState == 4) {
if (req.status == 200) {
// update the HTML DOM based on whether or not message is valid
procesarMensaje();
}
}
}



function procesarMensaje() {
var mdiv = req.getElementsByTagName("mensaje")[0];
imprimirTexto(mensaje.childNodes[0].nodevalue)
}

function imprimirTexto(mensaje){
var mdiv = document.getElementById("userIdMessage");
if(mensaje=="Correcto"){
mdiv.innerHTML = "Invalid User Id";

}
}

</script>

</head>
<body>


<h1>Existe Usuario</h1>

<form name="form1" method="post" action="">

<label for="usuario">Usuario:</label>

<input type="text"
size="20"
id="userid"
name="id"
onkeyup="validate();">

<div id="userIdMessage"></div>

<input type="submit" name="Submit" value="Enviar">
<input type="reset" name="Submit2" value="Borrar">

</form>

<br><br>
<hr>
Art&iacute;culo disponible en: <a href="http://lineadecodigo.com/2008/03/27/validar-usuario-usando-ajax/">http://lineadecodigo.com/2008/03/27/validar-usuario-usando-ajax/</a><br/>
<a href="http://lineadecodigo.com" title="Linea de Codigo">lineadecodigo.com</a>


</body>
</html>



********** servlet **** ValidateServlet .java



package asterisk.servlet.sip;

import java.io.IOException;
import java.util.HashMap;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class for Servlet: ValidateServlet
*
*/
public class ValidateServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;


public ValidateServlet() {
super();
}

/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub

String targetId = request.getParameter("id");

if ((targetId != null) && targetId.equalsIgnoreCase("consultoriajava") ){
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write("<mensaje>Correcto</mensaje>");

System.out.println("el usuario existe" + targetId);
} else {
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write("<mensaje>Incorrecto</mensaje>");
System.out.println("el usuario no existe" + targetId);
}
}



/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}

Raul
30 de Julio del 2009
Esta bueno el post. Resulta util para los que anden medio perdidos. Lo unico es que me parece que en la parte que dice
if(mensaje=="Correcto"){
mdiv.innerHTML = "Invalid User Id";

deberia decir
if(mensaje!="Correcto"){
mdiv.innerHTML = "Invalid User Id";

Saludos