Servlets y JSP
 

Ejercicios de introducción a las librerías de tags

En la plantilla tenemos una aplicación jsp-sesion8 que va a almacenar en una base de datos datosusuarios, en su tabla usuarios, los datos de los usuarios que se registren. Para ello utilizaremos las librerías de tags request y dbtags vistas en la parte teórica.

Configuración de librerías de tags

Como primer ejercicio, vamos a configurar la aplicación jsp-sesion8 para poder trabajar con las librerías:

  • Tenemos los ficheros TLD de las librerías (dbtags.tld y request.tld) en el directorio WEB-INF de la aplicación (carpeta web)
  • Tenemos los ficheros JAR de las librerías (dbtags.jar y request.jar) en el directorio WEB-INF/lib de la aplicación (carpeta web)
  • Modificamos el fichero descriptor de la aplicación (web.xml), añadiéndole las etiquetas para que acepte las dos librerías:
<taglib>
	<taglib-uri>
	http://jakarta.apache.org/taglibs/request-1.0
	</taglib-uri>
	<taglib-location>
	/WEB-INF/request.tld
	</taglib-location>
</taglib>

<taglib>
	<taglib-uri>
	http://jakarta.apache.org/taglibs/dbtags
	</taglib-uri>
	<taglib-location>
	/WEB-INF/dbtags.tld
	</taglib-location>
</taglib>

Registro de usuarios

Una vez tengamos la aplicación configurada, construiremos dos páginas:

  • Una página form_registro.html que contendrá un formulario con los siguientes campos de texto:

    • nombre: con el nombre del usuario
    • email: con su correo electrónico
    • login: nick que utilizará para entrar a la aplicación
    • password: con la contraseña para validarlo
    • telefono: con el número de teléfono
  • El formulario anterior tendrá un botón de submit que nos enviará a una página registro.jsp, que se encargará de introducir los datos del usuario en la base de datos, tomándolos de los parámetros de la petición (utilizando la librería request), e introduciéndolos en la base de datos (utilizando dbtags)

La aplicación mostrará un mensaje indicando si los datos se han introducido correctamente, o ha habido algún error. Para comprobar si ha habido algún error al insertar, podemos buscar tras la inserción un registro con los datos insertados, y mostrar el mensaje de error si no existe:

<%@ taglib uri="http://jakarta.apache.org/taglibs/request-1.0" prefix="req" %>
<%@ taglib uri="http://jakarta.apache.org/taglibs/dbtags" prefix="sql" %>
...
<sql:connection id="con1">
	...
</sql:connection>

<sql:statement id="s1" conn="con1">
	<sql:query>
		INSERT INTO usuarios(nombre, email...)
		VALUES 
		('<req:parameter name="nombre"/>',
		 '<req:parameter name="email"/>'...)
	</sql:query>
	<sql:execute/>
</sql:statement>

<sql:statement id="s1" conn="con1">
	<sql:query>
		SELECT * FROM usuarios 
		WHERE nombre='<req:parameter name="nombre"/>' 
		AND email='<req:parameter name="email"/>' 
		AND ...
	</sql:query>
	<sql:resultSet id="rs1"></sql:resultSet>
	<sql:wasEmpty>Error al insertar</sql:wasEmpty>
	<sql:wasNotEmpty>...</sql:wasNotEmpty>
</sql:statement>

<sql:closeConnection conn="con1"/>

Si se produce un error al insertar, es probable que el servidor lance una excepción. Por ejemplo, en el caso de que intentemos introducir un nombre que ya existe. No es necesario que capturemos ese error. Se deja como optativo comprobar, antes de insertar, si existe el nombre en la BD.

Nota: En el directorio db se encuentra el script para la creación de la BD.

Listado de usuarios y otras mejoras

Sobre lo anterior, podemos realizar una página listado.jsp que muestre un listado con los usuarios actualmente registrados

(*) Para cada uno, hacer que permita eliminarlo de la lista (se borrarían sus datos de la base de datos), o modificar sus datos (mostrando en otra página un formulario con sus datos para editarlos).