No he podido leer todo tu post entero, pero te dejo el código de mi proyecto para conectarse a la BD. Ten en cuenta que tendrás que cambiarle los parámetros de las variables. Y por cierto, yo no he modificado nada en ningún archivo de configuración del proyecto web para establecer la conexión a la Base de datos, todo lo he hecho con código.
Código:
public class ConexionBD {
private Connection con;
private boolean conectado = false;
private String driver = "com.mysql.jdbc.Driver";
private String hostname = "jdbc:mysql://mi_máquina:puerto";
private String user = "usuario";
private String password = "contraeña";
public void conectar() {
try {
Class.forName(driver).newInstance();
con = (Connection) DriverManager.getConnection(hostname, user, password);
conectado = true;
} catch (Exception e) {
System.out.println("ERROR AL CONECTAR A LA BASE DE DATOS");
e.printStackTrace();
}
}
public Connection getConexion() {
return con;
}
public boolean estaConectado() {
return conectado;
}
public void desconectar() {
try {
if (con != null) {
con.close();
}
} catch (Exception e) {
System.out.println("ERROR AL DESCONECTARSE DE LA BASE DE DATOS");
e.printStackTrace();
}
}
public String SQL_SELECT_CONTRASENA_USUARIO(String email) {
String item = new String();
try {
String sql = "select * from usuario where email ='" + email + "'";
PreparedStatement s = con.prepareStatement(sql);
ResultSet r = s.executeQuery();
if (r.getRow() == 1) {
//CORRECTO
item = r.getString("password");
} else {
//ERROR: USUARIO NO EXISTE
}
s.close();
r.close();
} catch (Exception ex) {
System.out.println("ERROR: SQL_SELECT_CONTRASENA_USUARIO");
//ex.printStackTrace();
}
return item;
}
Espero te sirva de ayuda. En cuanto a lo de separar la lógica de negocio de la capa de datos, es como debe ser, imagina que tienes la base de datos en otro servidor... deberias hacer RMI, pero si lo tienes todo integrado en el Servlet sería imposible..
Un saludo