Conceptos avanzados

 

1. (SUBASTA) Hasta ahora, la aplicación de subastas hace un seguimiento de usuarios valiéndose de un objeto Vector que los almacena. Ahora vamos a pasar a tratar a los usuarios mediante una base de datos.

Para ello, en el ZIP de la plantilla, se proporciona la clase PoolConexiones vista en la parte de teoría, y el fichero JAR para poder comunicar con una base de datos MySQL. Copiad la clase Java en el directorio WEB-INF/classes de la aplicación de subastas, y el fichero JAR en el directorio WEB-INF/lib.

Una vez hecho eso, modificamos el servlet ServletMain para poder utilizar una base de datos en lugar del vector usuarios utilizado hasta ahora. Los cambios a realizar son:

 

a) Sustituir el campo usuarios:

Vector usuarios = new Vector();

Por un pool de conexiones de unas 30 conexiones, a la base de datos "subasta". Definimos el campo al principio de la clase:

PoolConexiones pc;

Y luego le asignamos memoria en el método init():

pc = new PoolConexiones(30, "subasta");

Podemos añadir un método destroy() para liberar las conexiones al finalizar el servlet:

public void destroy() 
{
	for (int i = 0; i < pc.getMaxConexiones(); i++) 
	{ 
		pc.cierraConexion(i); 
	} 
}

 

b) Después, modificamos los métodos registraUsuario(), validaUsuario() y buscaUsuario(), para que no utilicen el vector usuarios antiguo, sino que acudan a la base de datos:

El método buscaUsuario(login) ya no nos hace falta, así que podemos eliminarlo. También podemos eliminar la clase interna Usuario.

En registraUsuario(login, password, email):

En validaUsuario(login, password):

NOTA: para poder utilizar los objetos Connection, ResultSet, etc, deberemos importar el paquete java.sql.*.

NOTA: algunas líneas de código de las expuestas anteriormente es posible que necesiten ir en bloques try... catch... para capturar excepciones propias del manejo de base de datos. Se omiten los bloques try...catch por simplicidad.

 

Para  instalar la base de datos, debéis seguir estos pasos:

mysql -uroot -pmysql < subasta.sql
mysql -uroot -pmysql
GRANT ALL PRIVILEGES ON subasta.* to 
'root'@'localhost.localdomain' 
identified by 'mysql';

FLUSH PRIVILEGES;