Estava olhando este artigo:
http://java.sun.com/developer/technicalArticles/J2EE/AJAX/?feed=JSC
Fiz um exemplinho, para quem quiser testar, segue o fonte:
public class HelloServlet extends HttpServlet {
/**
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String msg = "invalid";
String id = request.getParameter("id");
if (id.indexOf("ricardo") != -1 || id.indexOf("lecheta") != -1) {
msg = "OK";
}
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write("<message>" + msg + "</message>");
}
}
<html>
<head>
<script type="text/javascript">
var req;
function validate() {
var idField = document.getElementById("userid");
var url = "HelloServlet?id=" + escape(idField.value);
if (window.XMLHttpRequest) {
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() {
//alert('callback' + req.readyState);
if (req.readyState == 4) {
if (req.status == 200) {
// update the HTML DOM based on whether or not message is valid
parseMessage();
}
}
}
function parseMessage() {
var message = req.responseXML.getElementsByTagName("message")[0];
setMessage(message.childNodes[0].nodeValue);
}
function setMessage(message) {
var userMessageElement = document.getElementById("userIdMessage");
var html = "<font color=\"red\">" + message + "</font>";
//testar se é diferente para não atualizar desnecessariamente
if(html != userMessageElement.innerHTML){
userMessageElement.innerHTML = html;
}
}
</script>
</head>
<body>
UserName:
<input type="textfield"
id="userid"
name="userid"
onkeyup="validate();">
<div id="userIdMessage"></div>
</body>
</html>
Chegar pra um cara, perguntar se ele conhece Ajax e receber “time da Holanda? Conheço…” é dose. Hehe.

