como-enviar-parametros-a-un-servlet

Enviar parámetros a un Servlet desde una vista utilizando Post y Get

Hola que tal, esta vez vamos a ver como enviar parámetros a un servlet desde una vista jsp y viceversa utilizando los métodos POST y GET.

Para enviar parámetros a un servlet desde la vista se suele utilizar dos métodos, el primero se lo conoce como Get y el segundo como Post, ambos métodos permiten procesar una variable dentro de un servlet.

Pero y cuál es la diferencia?

Aunque va un poco más allá, básicamente la diferencia radica en que con GET, los parámetros se envían a través de la URL, por ejemplo si quiero realizar un login dentro de la aplicación, tengo que enviar desde la vista el usuario y la contraseña como parámetros, los valores de usuario y contraseña viajarán hasta el servidor a través de la URL, un típico ejemplo es el siguiente:

http://localhost:8080/Pasar_parámetros_desde_la_vista/Servlet?usuario=elargor@gmail.com&contrasenia=123&parametro=sesion

Como puedes ver los parámetros viajan hasta el servidor a través de la URL.

Mientras que si se lo hace a través de POST, los valores que contengan las variables usuario y contraseña viajarán internamente y no serán observados por el usuario.

Aunque en algunos casos no hay otra forma de hacerlo, pasar los parámetros por GET no es recomendable ya que todo lo que se pase al servidor como parámetro será visto por el usuario.

La versión de Eclipse que voy ha utilizar para el ejemplo es Eclipse Neon Release 4.6, si aún no lo tienes, en este enlace puedes ver como descargar y utilizarlo Ejecutar aplicación desde la consola vs IDE.

Estructura del Proyecto

enviar parámetros a un servlet

Para efectos del ejemplo debe quedar como se ve en la imagen anterior.

Nota: Si te interesa seguir el tema de programación Web con Java, puedes revisar mi Curso de Programación Java Web, con JSP, Servlet y JPA donde aprenderás paso a paso como desarrollar aplicaciones web con Java.

Indicaciones Generales

Lo primero que vas hacer, es crear un Proyecto en Eclipse: File->New-> Dynamic Web Project o File->New-> Other->Web->Dynamic Web Project.

Al crear el proyecto debes dejar toda la configuración por defecto..

Lo siguiente es crear el servlet dentro de la carpeta src-> (click derecho)New Servlet, le das el nombre del paquete y luego el nombre del Servlet..

Para crear una carpeta o un archivo jsp, le das click derecho donde quieras crear, luego New->Folder/JSP File, respectivamente de acuerdo a lo quieras crear.

Lo siguiente es crear una carpeta llamada vista dentro de WebContent.

Dentro de la carpeta vista debes crear dos archivos: login y verLogin, sólo le das el nombre ya que automáticamente se pone la extensión .jsp.

No olvides que la estructura debe quedar como la imagen anterior.

Enviar parámetros a un Servlet utilizando el método GET

Veamos el código del archivo login.jsp

Esta vista simula un formulario login, contiene los datos de usuario y contraseña que van a ser enviados al servlet.

Antes que nada recordar que para que puedas enviar una petición al servidor y esta pueda ser procesada por un servlet, los datos que vayas enviar deben estar dentro de un formulario, en este caso con la propiedad  method=”get”.

Entonces para que pases un parámetro o varios al servlet estos siempre deben estar dentro de un formulario y como propiedad el método con el que quieres enviar POST o GET.

También recordarte que para obtener cualquier valor dentro del servlet lo haces a través del nombre o name del elemento HTML de tu vista.

El valor del elemento HTML lo puedes dar dinámicamente como es el caso del elemento <input type=”text name=”usuario”> que es una caja de texto para guardar el usuario.

O también lo puedes hacer estáticamente a través de la propiedad value del elemento HTML, como es el caso del  elemento <input type=”hidden” name=”parametro” value=”sesion”>.

Ahora vamos a ver el código del servlet Servlet.java.

Para recibir cualquier valor desde la vista con el método GET se utiliza el método getParameter(“nombre_elemento_HTML”) del objeto request del servlet, para esto se le pasa como parámetro el nombre del elemento HTML que se quiere obtener.

En el Servlet.java se añade código dentro del método doGET().

Se crea una variable de tipo String que guarda el valor del elemento <input type=”hidden> del archivo login.jsp.

Por qué utilizo el elemento <input type=”hidden>?

Este elemento está oculto en el formulario de manera que no es visto por el usuario, pero internamente guarda un valor que viene a ser una etiqueta y básicamente es para saber que parte del código dentro del Servlet.java se va ejecutar.

Por ejemplo si tuvieras más código dentro de un servlet y si haces varias peticiones y todas son direccionadas a ese servlet siempre se va ejecutar todo el código, entonces la idea de poner un elemento oculto es guardar una etiqueta o un valor. Esta etiqueta o valor funciona dentro de un servlet como si de una estructura switch se tratara, es decir si  el valor o etiqueta como le llamo yo, y que llega desde la vista es igual por ejemplo a “sesion” como se ve en el ejemplo se ejecuta un código y así para cada caso.

El método getServletContext().getRequestDispatcher(“/vista/verLogin.jsp”).forward(request, response);

Lo que hace es mostrar o redireccionar a una nueva vista en este caso la vista verLogin.jsp.

Finalmente el código del archivo verLogin.jsp

Este archivo es redireccionado después que has dado click en el botón Iniciar Sesión de la vista login.jsp.

La redirección se hace en el Servlet cuando la variable parametro tiene el valor de sesion.

Y lo que se hace es simplemente mostrar los datos del usuario y la contraseña.

Enviar parámetros a un Servlet utilizando el método POST

Para enviar a través de POST vamos a crear un nuevo proyecto con la misma estructura que para el método GET.

El archivo login.jsp deberá quedar de la siguiente manera:

Las dos cosas principales que cambien con respecto al método GET es el método en el formulario que es POST y la propiedad action que en este caso es action=”?parametro=sesion”.

La propiedad action permite definir a qué servlet se va hacer la petición y también permite enviar la etiqueta parametro, que en GET se hacía con el elemento <input type=”hidden” name=”parametro” value=”sesion”>.

Por ejemplo si quisieras que los parámetros se procesen dentro de otro servlet que tienes dentro del proyecto, sólo debes enviar en la propiedad action, el nombre del servlet por ejemplo: action=”Servlet1?parametro=sesion”, asumiendo que el otro servlet se llama Servlet1.java.

Lo siguiente es definir el código del Servlet.java.

Este código lleva el método doGet(), puesto que al iniciar el Servlet este método es el que se va ejecutar.

Ahora definimos el código que va llevar el método doPost(), puesto que vamos a enviar parámetros por POST:

Básicamente es la misma codificación que en el método GET, realizado anteriormente, lo que se añadió es la impresión por consola (“Parámetros a través de POST”) para saber que si está entrando al método.

El archivo verLogin.jsp queda como el que utilizamos para el método GET.

De cualquier forma ya sea por POST o GET el resultado debe quedar de la siguiente manera:

como-enviar-parametros-a-servlet

Y ahora, a probar enviando parámetros desde el Servlet de tu aplicación .

Nota: Si te interesa seguir el tema de programación Web con Java, puedes revisar mi Curso de Programación Java Web, con JSP, Servlet y JPA donde aprenderás paso a paso como desarrollar aplicaciones web con Java.

Nos vemos en la próxima entrada.

Si quieres seguir el tema de programación Web con Java, puedes revisar los siguientes enlaces:

Opt In Image
Programación Web Full Stack
Suscríbete ahora y recibe los mejores contenidos sobre Programación Web en tu correo.

Tus datos estarán protegidos y 100% libre de Spam

Full Stack Developer, JavaScript, PHP, Java, Spring, Laravel, Vuejs, Blogger, aprendiendo y compartiendo conocimientos. Cursos de Programación Web en: https://programacionfullstack.com/

Artículos Recomendados

4 Thoughts to “Cómo enviar parámetros a un Servlet desde una vista utilizando Post y Get”

  1. Sebastian Fernandez

    Hice lo del metodo GET tal cual lo hiciste vos y no me esta redireccionando a la pagina verLogin 🙁

    1. Elivar Largo

      Eclipse es un poco complicado, elimina el proyecto, prueba saliendo de eclipse, entra y crea de nuevo el proyecto. Coméntame si pudiste

      1. Sebastian Fernandez

        Volvi a crear el proyecto, incluso agregandole el web.xml. Copie y pegue el codigo tal cual lo pusiste vos. Me toma los datos de usuario y contraseña:

        http://localhost:8080/Jsp/vista/index.jsp?nombre=Sebastian&apellido=Fernandez&parametro=sesion

        pero no me esta redirigiendo a la otra pagina, aun copiando el codigo de aca.
        Alguna idea de porque podría ser?
        Gracias!

        1. Elivar Largo

          Prueba poniendo un action indicando al servlet que vas enviar los parámetros (en el form) ejemplo action=”nombre de tu servlet”, recuerda que el forward enviado a la página verlogin.jsp, lo debes tener dentro del servlet. Si no funciona escríbeme directamente a mi correo elargo@ecodeup.com y lo hablamos más a detalle.

Dejar un Comentario