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

no me muestra un servlet desde un html

Estas en el tema de no me muestra un servlet desde un html en el foro de Java en Foros del Web. hola tengo la siguiente rama: tomcat/webapps/calc/web-inf/classes/calcservlet.class tomcat/webapps/calc/web-inf/web.xml tomcat/webapps/calc/index.html web.xml <?xml version"2.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Calculadora</display-name> <description> ...
  #1 (permalink)  
Antiguo 19/11/2004, 18:14
 
Fecha de Ingreso: noviembre-2004
Mensajes: 67
Antigüedad: 19 años, 5 meses
Puntos: 0
no me muestra un servlet desde un html

hola
tengo la siguiente rama:

tomcat/webapps/calc/web-inf/classes/calcservlet.class
tomcat/webapps/calc/web-inf/web.xml
tomcat/webapps/calc/index.html

web.xml

<?xml version"2.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>Calculadora</display-name>
<description>
proyecto calculadora
</description>

<servlet>
<servlet-name>/calcservlet</servlet-name>
<servlet-class>/calcservlet></servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>calcservlet</servlet-name>
<url-pattern>/calcservlet></url-pattern>
</servlet-mapping>

</web-app>



index.html
..
<form method=get action="calcservlet">
..


y al llamarlo http://localhost:8080/calc me muestra el index ingreso los datos pero el tomcat me manda un error 404 calcservlet no encontrado.

ALGUIEN ME DICE QUE ESTOY HACIENDO MAL?
DE ANTEMANO MUCHAS GRACIAS.
  #2 (permalink)  
Antiguo 19/11/2004, 18:45
 
Fecha de Ingreso: noviembre-2004
Mensajes: 67
Antigüedad: 19 años, 5 meses
Puntos: 0
aparte de los "calservlet>" que ya lo corregi, ah que se debera que no me muestre este servlet? ayuda
  #3 (permalink)  
Antiguo 19/11/2004, 19:00
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
Quitale el slash "/" a todo, menos al <url-pattern>

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #4 (permalink)  
Antiguo 19/11/2004, 19:33
 
Fecha de Ingreso: noviembre-2004
Mensajes: 67
Antigüedad: 19 años, 5 meses
Puntos: 0
hola mira lo cambie igual me dice que no lo encuentra: QUE RARO

Estado HTTP 404 - /calc/calcservlet

type Informe de estado

mensaje /calc/calcservlet

descripción El recurso requerido (/calc/calcservlet) no está disponible.








<?xml version"2.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>Calculadora</display-name>
<description>
proyecto calculadora
</description>

<servlet>
<servlet-name>calcservlet</servlet-name>
<servlet-class>calcservlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>calcservlet</servlet-name>
<url-pattern>/calcservlet</url-pattern>
</servlet-mapping>

</web-app>
  #5 (permalink)  
Antiguo 19/11/2004, 19:41
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
pero tu estas trando de llamarlo con esta URL /calc/calcservlet
y en el web.xml lo tienes asi /calcservlet

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #6 (permalink)  
Antiguo 19/11/2004, 20:29
 
Fecha de Ingreso: noviembre-2004
Mensajes: 67
Antigüedad: 19 años, 5 meses
Puntos: 0
te refieres a cambiarlo asi?

<url-pattern>/calc/calcservlet</url-pattern>

tampoco me resulta ayudame porfa
  #7 (permalink)  
Antiguo 19/11/2004, 21:08
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
Creo que admeas tienes mal tus rutas, pues la carpeta WEB-INF y sus sub carpetas deben ir dentro de /webapps/ROOT/

Ya te fijaste en eso??

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #8 (permalink)  
Antiguo 20/11/2004, 09:15
 
Fecha de Ingreso: noviembre-2004
Mensajes: 67
Antigüedad: 19 años, 5 meses
Puntos: 0
coloque mi directorio /calc en /webapps/ROOT/ pero igual no me resulta: que sera?

ahora esta asi:
/webapps/ROOT/calc/web-inf/index.html
/webapps/ROOT/calc/web-inf/classes/calcservlet.class y .java
/webapps/ROOT/calc/web-inf/web.xml


mi web.xml esta asi:
<?xml version"2.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>Calculadora</display-name>
<description>
proyecto calculadora
</description>

<servlet>
<servlet-name>calcservlet</servlet-name>
<servlet-class>calcservlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>calcservlet</servlet-name>
<url-pattern>/calcservlet</url-pattern>
</servlet-mapping>

</web-app>


mi index.html llama al servlet asi:
..
<form method=get action="calcservlet">
..


y mi servlet esta asi:

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class calcservlet extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
String p1=request.getParameter("p1");
String p2=request.getParameter("p2");
String op=request.getParameter("op");
int par1=Integer.parseInt(p1);
int par2=Integer.parseInt(p2);
int result=-1;
if (op.equals("+")) result=par1+par2;
else
if (op.equals("-")) result=par1-par2;
else
if (op.equals("*")) result=par1*par2;
else
if (op.equals("/")) result=par1/par2;
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println(p1+" "+op+" "+p2+"="+result);
}
}
  #9 (permalink)  
Antiguo 20/11/2004, 20:15
 
Fecha de Ingreso: noviembre-2004
Ubicación: Oviedo
Mensajes: 99
Antigüedad: 19 años, 5 meses
Puntos: 1
En el directorio raiz (ROOT) de tu servidor Apache trata de meter solo la pagina de inicio, osea, no pongas carpetas de aplicaciones WEB ni nada por el estilo. Si quieres crear una nueva aplicacion WEB creala a partir de /webapps/. Por ejemplo: /webapps/calc/
Tambien: no metas archivos como HTML, JSP, imagenes, etc... en el directorio WEB-INF de la aplicacion, puesto que no estarán disponibles para los clientes directamente (me extraña que puedas llamar directamente desde un cliente al INDEX.HTML que has metido en WEB-INF), creo que tienes un INDEX.HTML duplicado en la carpeta /webapps/ROOT. Este archivo se usa generalmente para acceder a la pagina principal del servidor. Aunque tambien se usa para acceder a las aplicaciones WEB con solo poner el nombre de la aplicacion, pero menos.
Y tampoco te hace falta mapear el servlet, con que hagas una referencia al servlet dentro del contexto de su aplicacion serviria:

<web-app>
<display-name>Calculadora</display-name>
<description>
proyecto calculadora
</description>

<servlet>
<servlet-name>calcservlet</servlet-name>
<display-name>calcservlet</display-name>
<servlet-class>calcservlet</servlet-class>
</servlet>

</web-app>

No veo que hayas puesto la referencia del servlet package en su clase, esto es muy importante ya que si tu servlet esta dentro de algun subcontexto, deberias especificarlo en el descriptor.

Si tu archivo INDEX.HTML está dentro de la carpeta /ROOT/, podrás referenciar a tu servlet desde el formulario asi:
<form method=get action="/calc/calcservlet">

Pero si tu archivo INDEX.HTML está dentro de la carpeta /webapps/calc/, tendrá que referenciar a tu servlet de esta forma:
<form method=get action="calcservlet">

A parte de todo, te recomiendo que uses el metodo de envio de un formulario como POST y no como GET, ya que con POST la peticion de los campos va dentro de la cabecera (no visible para el usuario), y como GET la envia el la URI (o URL) y seria visible para el usuario en caso de fallo.
  #10 (permalink)  
Antiguo 21/11/2004, 15:45
 
Fecha de Ingreso: noviembre-2004
Mensajes: 67
Antigüedad: 19 años, 5 meses
Puntos: 0
gracias a todos ahora aprendi otra cosa jejje

no se me ejecutaba los servlet que hacia por que nunca paraba ni reiniciaba el servicio del tomcat para que los cambios surgiera efecto, lo que hacia erroneamente era "exit" que es muyyy distinto a "stop"

gracias por las ayudassssssssss
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 13:47.