Complicando un poco nuestro servlet.Trabajando con formularios

Cuando hayamos conseguido que nos funcione el servlet, querremos conseguir mostrar un formulario, y recogerlo; y para hacer todo eso correctamente, vereis que dentro de poco, os volvere a hablar de «vistas», pero mientras tanto, vamos a hacer que nuestro servlet presente un formulario, y cuando se envie, lo recojamos y procesemos….

Recogida de parámetros de usuario

Cualquier información que nos pueda llegar desde el usuario, la recogeremos por medio del objeto HttpServletRequest que nos facilita el contenedor cuando nos llama en doGet o en doPost

Contenido generado para el metodo doPost

Vemos que para recoger un parámetro llamado “nombre” que envía un formulario, utilizo la línea 49 indicando el nombre del parámetro que deseo del objeto request.

Los valores que me puede devolver son:

  • “” (si no hay valor)
  • null (si no existe) el parametro.
  • El valor en caso de haber sido establecido.

Para verlo funcionando, vamos a modificar el servlet con el que habíamos trabajado antes para añadirle un formulario en donde solicitamos un parámetro al que llamaremos “nombre”.

La generacion del formulario, la realizaremos en el metodo doGet, porque es donde vendra, cuando llamemos a la pagina desde una URL, Como haremos que el formulario vuelva por POST, reservamos el metodo doPost para recibir los parametros que el formulario envie.

Lineas de programa para generar una pagina HTML con un formulario y que lo enviaremos en el metodo doGet

Recordad que tenemos que escribir SIEMPRE codigo HTML correcto, ya que vamos a ir a parar a un navegador web…

En la 39, enviamos el inicio del formulario, en donde indicamos que vamos a utilizar el metodo POST, ya que asi, dejaremos el metodo GET para crear el formulario, y en POST lo recibiremos.

El indicar “ACTION=#” hace que el formulario se envie a la misma pagina que lo creo, si no, deberíamos haber indicado la URL en donde se debía enviar.

Las restantes lineas, nos crean un label, una caja de input (que tiene el nombre del parámetro que queremos recibir!!!) y un botón para enviar

Para recibir este parámetro, escribiremos una línea en  doPost, y hacemos que nos muestre la información en consola. Algo asi:

Codigo del metodo doPost, para recibir y procesar el formulario que hemos generado

Si ahora intentamos lanzar el programa, veremos que en nuestro navegador aparece una caja de texto y un botón

Escribimos nuestro nombre y pulsamos el botón “Enviar consulta” y en la consola de Eclipse veremos el nombre

El objeto ServletRequest tiene mas métodos que pueden ser interesante:

El otro objeto con el que tenemos que trabajar en un Servlet es el HttpServletResponse que representa el navegador del cliente para nuestra salida. Disponemos de los métodos:

Transferencia y redireccionamiento de peticiones

Antes de cerrar este articulo, queda por comentar una operacion que tendreis que utilizar muy a menudo, y es que antes de devolver el control al usuario, puede que os interese pasar por otros servlets, (o por paginas JSP, ya las veremos)

  • Un servlet puede tomar como entrada la salida de otro servlet, y no le importa mucho a donde va la que el genera.
  • Servlet Chaining: El servidor guía la request a través de diferentes servlets que van enriqueciéndola, y al final la redirige al cliente.
  • Para qué sirve todo eso?
    • Evitar repetición de tareas
      • Ej: Añadir una fecha, preprocesado de etiquetas, añadir firma, etc…
    • Realizar tareas de autentificación
      • Control si el usuario está o no autentificado.
    • Realizar un diseño modular de la capa de presentación: un Servlet, una acción
      • Maximiza la reutilización

El objeto javax.servlet.RequestDispatcher permite enviar peticionas a otros servlets o páginas jsp.

Si queremos transferir el control a otro server, debemos crear un RequestDispatcher con la dirección a la que deseamos ir

Si queremos transferir el control, utilizamos forward (59), si queremos que cuando termine, el control vuelva a este servlet, utilizamos include (61)

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en Desarrollo Web, Formacion, Java y etiquetada , , . Guarda el enlace permanente.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.