Estoy intentando soltarme con AJAX y de momento no me va muy bien... estoy haciendo un proyectito sencillo que consiste en un botón que al pulsarlo crea un objeto ajax y llama a un servlet que devuelve una cadena de texto que represento en 4 cajas de texto.
Tal y como lo tengo construido ni siquiera me llama al servlet, ya que he probado a ejecutar el servlet directamente submitiendo el formulario y colocando el servlet como action y si se ha ejecutado, os pongo el código por si me podéis ayudar donde tengo el error.
Página JSP:
Código:
WEB.XML<?xml version="1.0" encoding="UTF-8"?> <%@page pageEncoding="ISO-8859-1" contentType="text/html;charset=UTF-8" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Prueba Ajax</title> <link rel="STYLESHEET" type="text/css" href="estilo.css"> <script src="javascript.js" valor=50></script> <script lang="javascript"> var http = nuevoAjax(); </script> </head> <body> <div id="contenedor"> <div id="cabecera"><h1><span>Prueba Ajax</span></h1> </div> <div id="cuerpo"> <div id="dialogo"> <br> <h1><span>Prueba Ajax</span></h1><br> <form id="myForm" name ="myForm"> Pulsar: <input type="button" name="nomLinea" onclick="datosL()"/> tl: <input type="text" name="txt1" id="txt1" /> km: <input type="text" name="txt2" id="txt2" /> orig: <input type="text" name="txt3" id="txt3" /> dest: <input type="text" name="txt4" id="txt4"/> </form> <br> </div> </div> </div> </body> </html>
Código:
javascript.js<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet-mapping> <servlet-name>ServlPrueba</servlet-name> <url-pattern>/ServlPrueba</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>ServlPrueba</servlet-name> <servlet-class>servl.ServlPrueba</servlet-class> </servlet> </web-app>
Código:
servlPrueba.javafunction nuevoAjax() { var xmlHttpReq = false; // to create XMLHttpRequest object in non-Microsoft browsers if (window.XMLHttpRequest) { xmlHttpReq = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { // to create XMLHttpRequest object in later versions // of Internet Explorer xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (exp1) { try { // to create XMLHttpRequest object in older versions // of Internet Explorer xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (exp2) { xmlHttpReq = false; } } } return xmlHttpReq; } function datosL(){ http.open("POST", "ServlPrueba", true); http.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=ISO-8859-1'); http.onreadystatechange = function () { if (http.readyState == 4) { var response = http.responseText; var vuelta = response.split('/'); document.myForm.txt1.value = vuelta[0]; document.myForm.txt2.value = vuelta[1]; document.myForm.txt3.value = vuelta[2]; document.myForm.txt4.value = vuelta[3]; } } var parametros = "param=1"; http.send(parametros); }
Código:
El error que me devuelve el servidor es:package servl; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author dasensio */ public class ServlPrueba extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws java.io.IOException { String respuesta; respuesta = "Tipo"; respuesta += "/"; respuesta += "12.12"; respuesta += "/"; respuesta += "Origen"; respuesta += "/"; respuesta += "Destino"; res.getWriter().write(respuesta); } public void doGet(HttpServletRequest req, HttpServletResponse res) throws java.io.IOException { doPost(req, res); } }
feb 07, 2013 1:16:11 PM org.apache.catalina.core.ApplicationContext log
INFO: Marcando el servlet ServlPrueba como no disponible
feb 07, 2013 1:16:11 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Excepción de reserva de espacio para servlet ServlPrueba
java.lang.ClassNotFoundException: servl.ServlPrueba
at org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoader.java:1711)
at org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoader.java:1556)
at org.apache.catalina.core.DefaultInstanceManager.lo adClass(DefaultInstanceManager.java:525)
at org.apache.catalina.core.DefaultInstanceManager.lo adClassMaybePrivileged(DefaultInstanceManager.java :507)
at org.apache.catalina.core.DefaultInstanceManager.ne wInstance(DefaultInstanceManager.java:124)
at org.apache.catalina.core.StandardWrapper.loadServl et(StandardWrapper.java:1136)
...
Muchísimas gracias por anticipado, y un saludo.