En prácticamente todas las aplicaciones que pensemos realizar interacción con base de datos vamos a necesitar dos interfaces iniciales para arrancar nuestra aplicación.
- Login A través de esta ventana recogemos el usuario y su contraseña para poder acceder a nuestra aplicación con un determinado usuario recogido desde la BBDD
- Registo A través de esta interfaz realizamos la inserción en la base de datos de un nuevo usuario para poder acceder a la aplicación
El siguiente ejemplo es un poco más largo que las anteriores aportaciones sin embargo nos permitirá ver paso a paso y con mucho detalle cómo poder crear dichas dos ventanas.
Paso 1. Creando el esqueleto
Siguiendo la metodología MVC
, crearemos el esqueleto dentro de nuestro ejemplo/aplicación que nos permita separar nuestro código en Modelo, Vistas y la parte de Controlador. De esta forma será mucho más sencillo posteriormente poder mantener nuestro código y realizar ampliaciones futuras.
Paso 2. Creando las interfaces
Tal y como hemos visto en anteriores lecciones, el uso de los Managers (Managers básicos o Managers más avanzados), nos permite estructurar de una forma ordenada todos los elementos de nuestras interfaces, hacienddo que se redistribuyan de acuerdo a unas dimensiones dependientes del dispositivo donde se visualiza la aplicación. En nuestro caso utilizaremos principalmente el GridBagLayout.
Paso 3. Contraseña
En el momento que trabajamos con usuarios y contraseñas, entramos en un mundo bastante delicado donde es muy muy importante utilizar adecuadamente los sistemas de seguridad para mantener a salvo contraseñas. Uno de esos elementos es el JPasswordField, que aunque resulta muy parecido en apariencia con el JTextField, internamente utiliza métodos más seguros pero por otro lado un poco más complejos de utilizar.
Paso 4. Formulario de Registro
En la ventana de registro es importante realizar una comprobación de todos los campos, en primer lugar para que no estén vacíos, en segundo lugar en su corrección de forma y contenido. En este segundo caso no realizaremos un análisis exhaustivo de cómo realizarlo, sin embargo dejaremos perfectamente descrito el proceso general y en particular el más crítico como es el de las contraseñas.
Paso 5. Inserción de nuevo usuario
El siguiente paso es comenzar a interactuar entre las dos ventanas de creadas y la base de datos. Para ello introduciremos lo aprendido sobre inserción en base de datos, recuperar información o actualizar la base de datos, sin perder de vista incluir el patrón SingleTon para manejar las conexiones de contra la base de datos.
Más complicado será generar el hash en MD5 para poder almacenar nuestra contraseña en la base de datos, ya que no podemos almacenarla como un texto plano, sería un problema de seguridad. Sin entrar en detalles utilizaríamos la clase MessageDigest, que nos permite realizar dicha operación:
// Cargamos en ejecución m = MessageDigest.getInstance("MD5"); m.reset(); byte[] digest = m.digest(toBytes(pass));
Paso 6. Finalizando y comprobando usuario
Por último sólo nos queda por comprobar el usuario y su login a través de la pantalla de logado. Para poder realizarlo reutilizaremos el código inicial añadiendo tanto una consulta a la base de datos con la que comprobamos el usuario y la librería MD5 para la contraseña introducida.