Recibir parámetros en un Servlet

25/Dic/2007 Java , , , , , , , 10 Comentarios

A la hora de enviar información a un Servlet tenemos dos formas: mediante el método GET y mediante el método POST. Existen una serie de diferencias entre pasarlos de una forma u otra:

Metodo POST. Este método solo esta accesible desde los formularios. Se envían los parámetros de forma implícita junto a la página, es decir, al pasar los parámetros, nosotros no vemos reflejado en ningún sitio qué parámetros son y cual es su valor.

Método GET. Este método envía los parámetros de forma explicita junto a la página, mostrando en la barra de navegación los parámetros y sus valores. Son esas largas cadenas que aparecen en algunas páginas en nuestra barra de navegación, del estilo: buscar?id=1806&valor=0987&texto=todo&...

Las cadenas toman el aspecto parametro1=valor1&parametro2=valor2&....&parametroN=valorN. Es decir es una concatenación a través de & de pares parámetro-valor.

Preparando la página de envío

La página de envío será una simple página HTML. Lo primero que tenemos que hacer es montar las URL de envío. La URL está compuesta por el nombre del servidor, en nuestro caso localhost, el puerto (8080), el nombre de la aplicación web, en nuestro caso "lineadecodigo_j2ee" y el nombre del servlet.

Así la URL quedará de la siguiente forma:

http://localhost:8080/lineadecodigo_j2ee/RecibirParametros

La URL la montaremos en un formulario:

  1. <form action="http://localhost:8080/lineadecodigo_j2ee
  2. /RecibirParametros" method="post">
  3. <label for="texto1">Texto 1</label><input type="text" id="texto1" name="texto1" size=20><br>
  4. <label for="texto2">Texto 2</label><input type="text" id="texto2" name="texto2" size=20>
  5. <input type="submit" value="Enviar">
  6. </form>

y en un enlace:

<a href="http://localhost:8080/lineadecodigo_j2ee/RecibirParametros?texto1=lineadecodigo&texto2=imagen">Mandar parametros por GET</a>

Codificando el Servlet

Lo primero que hay que saber es que la clase que implemente el Servlet extiende de HttpServlet. Así el código será el siguiente:

  1. public class RecibirParametros extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
  2. ...
  3. }

Dentro del Servlet hay dos métodos importantes: doGet y doPost. Estos métodos son los que atienden las peticiones POST y GET de la página, respectivamente.

  1. public class RecibirParametros extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
  2.  
  3. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  4. ...
  5. }
  6.  
  7. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  8. ...
  9. }
  10. }

Ambos métodos reciben como parámetros los datos de la petición HttpServletRequest y el flujo de la salida de respuesta HttpServletResponse.

Podemos codificar los dos métodos para hacer cosas diferentes si viene una petición POST u otra GET. O bien, como en nuestro caso, encaminar una petición a la otra para tratarlas de una misma forma.

  1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. doPost(request,response);
  3. }

Para recibir los parámetros nos vamos a apoyar en el objeto HttpServletRequest y en concreto en el método .getParameter(). En este método indicaremos el nombre del parámetro que queremos recuperar.

  1. String parametro1 = request.getParameter("texto1");
  2. String parametro2 = request.getParameter("texto2");
  3.  

En este caso los parámetros se llaman texto1 y texto2.

Lo siguiente que haremos será montar la respuesta. Ahora nos apoyaremos en el objeto HttpServletResponse. Mediante el método .getWriter() obtendremos el stream de salida. Esto lo manejamos mediante el objeto PrintWriter.

  1. out = response.getWriter();

Antes de empezar a volcar texto en el flujo de salida tenemos que indicar el tipo de contenido que se vuelca. En este caso es "text/html". Es lo que se denomina content-type.

  1. response.setContentType("text/html");

Ahora solo quedará el ir volcando información mediante métodos .println(). El cual tiene como parámetro el texto a volcar a la página.

  1. out.println("<html>");
  2. out.println("<head><title>Enviar parametros a un Servlet</title></head>");
  3. out.println("<body>");
  4. out.println("<h1>Enviar parametros a un Servlet</h1>");
  5. out.println("La primera palabra pasada como parámetro es <strong>" + parametro1 + "</strong><br>");
  6. out.println("La segunda palabra pasada como parámetro es <strong>" + parametro2 + "</strong>");
  7. out.println("</body></html>");

Vídeos sobre Java Servlet


10 comentarios en “Recibir parámetros en un Servlet”

Víctor Cuervo

Maria Esmeralda

Hola a todos chicos! me gustaria saber si alguno de ustedes me podria ayudar, tengo una crisis con un trabajo de la uni. tengo que hacer que un servlet lea un archivo XML que me envian y yo lo convierta en un objeto que le enviare a un servicio web. pero he buscado por todos los foros y no hallo la manera de hacerlo, gracias a quien me pueda ayudar, besitoss. mi correo es: Beba.mariaesmeralda@gmail.com porfa una documentacion o ejemplo se los sabre agradecer, chauuu

Víctor Cuervo

Víctor Cuervo

@Julio,

El & es el carácter que se utiliza para separar las variables a pasar al servlet. Si quieres pasarlo como valor tienes que escaparlo.

Si están montando las URL a mano puedes apoyarte en la clase URLEncoder. Puedes encontrar información en http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html

Víctor Cuervo

Julio

Alguien sabe como tomar el valor de un parametro, pero cuando el valor contiene &?? es decir:

http://localhost:8080/lineadecodigo_j2ee/RecibirParametros?rfc=FA&F821202N41

ya que solo me toma como valor: FA =S

alguien me puede ayudar,

muchas gracias

Víctor Cuervo

Víctor Cuervo

@Jarboox,

Tienes que poner un campo input de tipo file.
En el servlet tendrás que tratar el mensaje como de tipo multi-part.
Esperamos poder ponerte un ejemplo en Línea de Código en breve.

Víctor Cuervo

Jarboox

Alguien sabe como enviar una imagen desde un archivo HTML y recibirlo en el servlet o si se puede??
Les agradecería que alguien conteste mi duda, por lo mientras seguiré leyendo 🙂 haber si logro encontrar algo. 🙂

Víctor Cuervo

Gabriel

Me re sirvio Muchas Gracias, al que dijo “tienen que usar JSP para hacer cosas como la gente” , vichate eastwood de jfree ….

Víctor Cuervo

ziggurat

gracias!! a mi m r sirve!! jaaa, noce los otros por q t discuten, tal vez yo no lo hago, por q so nuevo, gracias dvuelta hE!

Víctor Cuervo

scsdsd

La verdad esto no sirve mucho de nada ( osea nada ), tienen que usar JSP para hacer cosas como la gente

Víctor Cuervo

Hernan Rodriguez

como rescatar los parametros de un formulario, donde un href envie a una pagina servidor (servlet), pero que se asigne los parametros estaticamente

Víctor Cuervo

carlos

eso esta mal segurooooo

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*