Problema con método post y get

Sergio
21 de Marzo del 2005
Hola,
Escribo porque tengo un problema con el metodo "post" a la hora de comunicar datos de un html a un servlet.
Me dice que la url no soporta el metodo Get (algo parecido).
En cambio cuando uso el metodo get, no se queja pero no hace caso del contenido de la web y carga directamente el servlet con lo que no le pasa ninguna información. El código que uso no puede ser más simple. Llevo un par de días detras de esto y estoy ciertamente desesperado ya.
Alguien podría darme algo de luz?
Muchas gracias de antemano.
Sergio


codigo del servlet:
// Java Document

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

public class HolaMundoServlet
extends javax.servlet.http.HttpServlet
{
public void doGet(HttpServletRequest peticion, HttpServletResponse respuesta)
throws ServletException, IOException
{
respuesta.setContentType("text/HTML");
PrintWriter out = respuesta.getWriter();


String nombre=peticion.getParameter("nombre");

out.println("<HTML><BODY>¡Hola " + nombre + "!</BODY></HTML>");
}
}

codigo del html:
<html><head><title>Hola mundo</title>
</head>
<body>
<form action="servlet/HolaMundoServlet" method="get">
hola <br>como te llamas? <input type="text" name= "nombre">
<input type="submit">
<input type="Reset">
</form></body></html>

David
21 de Marzo del 2005
Hola

Si no he entendido mal, has intentado hacer una petición al servlet por método POST y el error que te ha dado es algo así como "POST method not supported", por lo que no te ha quedado más remedio que pasar los datos del formulario por método GET. ¿No es así?

Fíjate en el código de tu servlet. Implementas sólo el método doGet(HttpServletRequest req, HttpServletResponse resp), así que sólo puedes dar respuesta a peticiones GET.

Para aceptar peticiones POST debes implementar también el método doPost(HttpServletRequest req, HttpServletResponse resp).

Un truqui: como habitualmente la respuesta será la misma sea cual sea el tipo de petición, te aconsejo algo así:

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
do(req, resp);
}

public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
do(req, resp);
}

private void do(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Aquí haces lo que quieras
}


Salud

David

Sergio
21 de Marzo del 2005
En realidad no tiene que ver con que tenga definido el metodo post en el servlet, xq cuando porbaba el post ya definía de igual manera que el get el metodo post.
Por otro lado esta el hecho que usando el get, lo que hace es cargar el servlet sin mas y no me saca nada de la web, alguien tiene alguna idea?
Salud!!