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
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.
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:
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
- Evitar repetición de tareas
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)